【问题标题】:How to add where inside DB::raw() in laravel如何在 laravel 中的 DB::raw() 中添加 where
【发布时间】:2023-03-24 13:41:01
【问题描述】:

我想在 1 个查询中获取 completed 订单数量和 rejected 订单数量。请在下面查看我的代码。如何在 DB::raw() 中添加 where 或条件?

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]: 语法错误或访问冲突: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`

【问题讨论】:

  • ->get() 更改为->sql() 并转储它的输出是什么?
  • @Mike 请看我的更新。

标签: php mysql database laravel


【解决方案1】:

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 sum

如果看到这个answer

【讨论】:

    猜你喜欢
    • 2018-03-15
    • 2017-11-17
    • 1970-01-01
    • 2016-07-29
    • 2018-10-24
    • 1970-01-01
    • 2020-06-10
    • 2019-11-28
    • 2015-11-20
    相关资源
    最近更新 更多