我正在嘗試優化我的 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 關注
- 200 瀏覽
添加回答
舉報
0/150
提交
取消