2019-04-18 15:46:21 1308次浏览 0条回答 0 悬赏 10 金钱
class OrderModel extend ActiveRecord
{
    public function getAbc()
    {
        return $this->has(AbcModel::className(),['orderId'=>'orderId']);
    }
}

例如1:

$r = OrderModel::find()->joinWith('abc')->where(['{{%orders}}.orderId'=>1])->one();
$r->abc

例如2:

$r = OrderModel::find()->where(['orderId'=>1])->one();
$r->abc

例1和例2有区别么?

补充于 2019-04-18 16:16

我觉得这两个使用的结果都是一样的。

区别:
例子1如果 joinWith([多个]) 会把多个关联查询出来然后全部缓存起来。(如果有不用的一些关联查询,会浪费效率去查询在缓存)

例子2 ->关联对象, 是在使用的时候才去查询然后再缓存。(使用哪个关联才去调用查询并缓存)

我是这样认为的。对么?

上面保留证据,好像理解错了。

    没有找到数据。
您需要登录后才可以回答。登录 | 立即注册
灰太狼
副总裁

灰太狼

注册时间:2016-11-19
最后登录:2023-07-14
在线时长:76小时17分
  • 粉丝28
  • 金钱3290
  • 威望150
  • 积分5550

热门问题