繁体   English   中英

如何在 laravel 中的 DB::raw() 中添加 where

[英]How to add where inside DB::raw() in laravel

我想获得已completed的订单金额, rejected的订单计入 1 个查询。 请在下面查看我的代码。 如何在 DB::raw() 中添加位置或条件?

return DB::table('restaurants')
->join('orders', 'restaurants.id', 'orders.restaurant_id')
->select([
   DB::raw('SUM(orders.total) WHERE status = 8 as completed_sum'),
   DB::raw('COUNT(DISTINCT(orders.transaction_code)) WHERE status = 3 as rejected_count')
])
->get();

错误

SQLSTATE[42000]: Syntax error or access violation: 1064 你的 SQL 语法有错误;

更新

当我尝试->toSql()时,我得到了这个:

select `restaurant_name` as `restaurant`, SUM(total) WHERE status = 8 as completed_sum,
COUNT(DISTINCT(transaction_code)) WHERE status = 3 as rejected_count from `restuarants` inner join `orders` on
`restuarants`.`id` = `orders`.`restaurant_id` where `orders`.`date` between ? and ? group by `restuarants`.`id`

id 没有机会测试它......但它应该可以工作

->select([
   DB::raw('SUM(CASE WHEN status = 8 THEN orders.total END) completed_sum'),
   DB::raw('COUNT(DISTINCT IF(status = 3,orders.transaction_code,null)) as rejected_count')
])

对于有条件的总和,请参见: mysql 总和

对于 count with distinct with if 看到这个答案

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM