2016-10-09 23:18:28 2393次浏览 1条回答 0 悬赏 10 金钱

$users = $users->joinWith('profile')->limit(10)->all();
user表 和 profile表 通过user_id字段关联。

通过degug工具得知,上面的代码会执行:

SELECT `shop_user`.* FROM `shop_user` LEFT JOIN `shop_profile` ON `shop_user`.`user_id` = `shop_profile`.`user_id` LIMIT 10;

已经能查询出来了,可为什么还要执行:

SELECT * FROM `shop_profile` WHERE `user_id` IN ('10', '11');

不是多此一举么?

  • 回答于 2016-10-10 08:48 举报

    第二条不是只查询了id=10、11两个么?

    2 条回复
    回复于 2016-10-10 10:21 回复

    恩恩,我知道了,第一条sql语句只筛选出了 shop_user 的全部字段,没有筛选出profile里的字段。
    那这效率还不如with()吧?

    回复于 2016-10-10 10:38 回复

    yii几种方法都有提供。有兴趣可以都试一试。

您需要登录后才可以回答。登录 | 立即注册
STFPHP
总监

STFPHP

注册时间:2016-10-31
最后登录:2017-07-14
在线时长:14小时55分
  • 粉丝6
  • 金钱3535
  • 威望0
  • 积分3675

热门问题