使用mysql,THINKPHP查询副表无数据的列表,及查询副表数据做排序等的使用方法
阿里云国内75折 回扣 微信号:monov8 |
阿里云国际,腾讯云国际,低至75折。AWS 93折 免费开户实名账号 代冲值 优惠多多 微信号:monov8 飞机:@monov6 |
使用mysql查询主表有数据,副表0条数据的列表
SELECT * FROM `order` as a where 0=(select count(*) from goods_evaluate where order_id=a.id)
Thinkphp6的用法一:
Db::name('order')
->alias('a')
->whereRaw('0=(select count(*) from goods_evaluate where order_id=a.id)')
->select();
Thinkphp6的用法二 (使用模型):
Order::alias('a')->whereRaw('('.GoodsEvaluate::alias('f')->whereRaw('f.order_id = a.order_id')->fetchSql(true)->count().') = 0')->select();
同样我们使用这种方法也可以在查询的数据做计算例如 主表的 virtual_sale与sale相加计算 并命名为 sale,并查询副表的sale_price命名为price
$result = self::alias('a')
->where('id',$id)
->field('a.*,
(a.virtual_sale+a.sale) as sale,
('.GoodsSpecModel::alias('b')
->whereRaw('b.goods_id = a.id && b.delete_time is null')
->order('id')
->fetchSql(true)
->value('sale_price').'
) as price')->find();
一样的方法我们也可以灵活使用在order等TP方法中
例如
$result = self::alias('a')
->where('id',$id)
->field('
a.*,
('.GoodsSpecModel::alias('b')
->whereRaw('b.goods_id = a.id && b.delete_time is null')
->fetchSql(true)
->value('price').'
) as price')->order('price desc')->select();
阿里云国内75折 回扣 微信号:monov8 |
阿里云国际,腾讯云国际,低至75折。AWS 93折 免费开户实名账号 代冲值 优惠多多 微信号:monov8 飞机:@monov6 |