yii2框架怎么写子查询

admin4年前PHP589

在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

相关文章

宝塔面板无法执行composer命令

请选择root用户执行...

Yii2 手册

https://www.kancloud.cn/moxuandi/yii2-class...

2023年最新的28道PHP面试题附答案

https://www.swvq.com/boutique/detail/6734...

腾讯云点播总结

防盗链设置 https://cloud.tencent.com/document/product/266/14047超级播放器签名 https://cloud.tencent.com/document...

fastadmin后台表单元素添加验证码

data-rule="required;length(3~50);sn"...

阿里云虚拟电话保护

下载安装好compser下载DEMO,参考网址https://next.api.aliyun.com/api/Dyplsapi/2017-05-25/BindAxb?spm=a2c4g.1118662...

发表评论    

◎欢迎参与讨论,请在这里发表您的看法、交流您的观点。