簡體   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