yii2 JoinWith分析 [ 2.0 版本 ]
如下语句:
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
然后再为每个关联执行一条查询语句, 并填充相应的关联模型。
得到的结果如下
问题:
我想知道第一步已经满足了我们的需要了,yii为啥还在执行第二步呢?有啥含义吗?
共 1 个回答
tyx
注册时间:2015-09-18
最后登录:2016-08-11
在线时长:3小时3分
最后登录:2016-08-11
在线时长:3小时3分
- 粉丝1
- 金钱49
- 威望0
- 积分79