在yii中使用子查詢的方法
第一步,先建立一個子查詢,可以是基於yii\db\Query 創建,也可以基於Model。
$subQuery = Order::find() ->where(['user_id' => $userId]) ->andWhere(['status' => $status]);
也可以增加排序,分頁,例如:
$subQuery->orderBy(['id' => SORT_ASC]) ->offset($offset) ->limit($pageSize);
接下來就可以在我們的主查詢中使用這個子查詢了,只要是在mysql中可以寫子查詢的地方,都可以直接使用這個子查詢。
$list = (new Query())->select($field) ->from(['order' => $subQuery]) // 在这里使用了子查询 ->leftJoin(['goods' => OrderGoods::tableName()], 'order.id = goods.order_id') ->createCommand() ->queryAll();
最終產生的語句
SELECT * FROM ( SELECT * FROM `od_order` WHERE ( `user_id` = '1' ) ORDER BY `id` ASC LIMIT 10 OFFSET 1 ) `order` LEFT JOIN `od_order_goods` `goods` ON `order`.id = goods.order_id
PHP中文網,有大量免費的Yii入門教學,歡迎大家學習!
以上是yii2框架怎麼寫子查詢的詳細內容。更多資訊請關注PHP中文網其他相關文章!