2016-08-03 10:12:25 3315次浏览 1条回答 0 悬赏 10 金钱

如下语句:

self::find()->select($field)->joinWith(['channelExtAttribute'])->where(['id'=>$gather_id])->asArray()->one();

执行后查看sql日志吗,发现其分了两步执行

第一步:

SELECT * FROM `wdb_operation_gather_channel` LEFT JOIN `wdb_operation_gather_channel_ext_attribute` ON `wdb_operation_gather_channel`.`id` = `wdb_operation_gather_channel_ext_attribute`.`gather_channel_id` WHERE `id`='1'

先执行满足JOIN查询条件的SQL语句,把结果填充到主模型中

第二步:

SELECT * FROM `wdb_operation_gather_channel_ext_attribute` WHERE `gather_channel_id`=1

然后再为每个关联执行一条查询语句, 并填充相应的关联模型。

得到的结果如下
QQ截图20160803184727.jpg

问题:
我想知道第一步已经满足了我们的需要了,yii为啥还在执行第二步呢?有啥含义吗?

  • 回答于 2016-08-03 17:38 举报

    你这货有打广告的嫌疑,码农网,哈哈 😄

    1 条回复
    回复于 2016-08-03 18:46 回复

    随便写了个网址而已,我要是写个百度难不成还给百度打广告呢,我说的重点是问题呵呵,

您需要登录后才可以回答。登录 | 立即注册
tyx
职场新人

tyx

注册时间:2015-09-18
最后登录:2016-08-11
在线时长:3小时3分
  • 粉丝1
  • 金钱49
  • 威望0
  • 积分79

热门问题