我正在尝试优化我的 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();
- 1 回答
- 0 关注
- 182 浏览
添加回答
举报
0/150
提交
取消