在YII中使用子查詢的方法
第一步,先創建一個子查詢,可以是基于 yiidbQuery 創建,也可以基于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
? 版權聲明
文章版權歸作者所有,未經允許請勿轉載。
THE END