为了账号安全,请及时绑定邮箱和手机立即绑定

我可以通过关系在单个查询中获取所有需要的数据吗?

我可以通过关系在单个查询中获取所有需要的数据吗?

PHP
呼唤远方 2021-12-03 15:32:04
我正在尝试优化我的 SQL 查询。我实际上使用 yii2 框架来操作数据。我可以在 MySQL 控制台中使用关系查询所需的数据,查询将如下所示:SELECT * FROM user u LEFT JOIN relation_user_shop rus ON rus.userId = u.id LEFT JOIN shop s ON s.id = rus.shopId ORDER BY u.id LIMIT 20它向我查询我需要的正确数据,但它仅适用于 mysql。当我尝试将数据返回到 yii2 时,我也得到了混合 id(相关表的主键:用户、商店)和其他数据混合。我知道,我可以在 3 次,一个接一个:1. get user2. select shop ids in junction table3. query data from shop, and concate with user object可以在 ONE 查询中完成吗?
查看完整描述

1 回答

?
慕丝7291255

TA贡献1859条经验 获得超6个赞

如果你需要在查询了严格的控制研究与表之间equale时获得所有你需要不同的列名alais管理列

一个简单的(和性能方法)是DB-> createCommand基地


queryAll() 返回一个包含所有选定行的数组 ob 对象


$q =    'SELECT u.col1

  , u.col2

  , u.col3

  , rus.col1 as rus_col1

  , rus.col2 as rus_col2

  , s.col1 as s_col1

  , s.col2 as s_col2 

  FROM user u

  LEFT JOIN relation_user_shop rus ON rus.userId = u.id

  LEFT JOIN shop s ON s.id = ;';


$models =   Yii::$app->db->createCommand( $q )->queryAll(); 


查看完整回答
反对 回复 2021-12-03
  • 1 回答
  • 0 关注
  • 182 浏览

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信