[英]Laravel SQl: How to return 0 value if no record exists
如果事務表中沒有記錄,我將嘗試返回零值。 現在,如果沒有針對特定預算的交易,那么我什么也得不到。 這是我現在的查詢。感謝您的幫助。 下面是一個示例,當我不要求它返回任何燃料時,何時需要它返回0。 我澄清了
預算表
_____________
id | name
1 | Groceries
2 | Fuel
交易表
__________________
id | Category_id | Amount
1 | 1 | 30
Laravel代碼
$budgets = Budget::join('transactions', 'budgets.id', '=', 'transactions.category','left outer')
->select([
DB::raw('SUM(transactions.amount) / budgets.amount * 100 as percent'),
'budgets.category'
])
->where('transactions.user_id','=', $authId)
->where('budgets.user_id','=',$authId)
->whereBetween('transactions.created_at', array($first_day_this_month, $last_day_this_month))
->groupBy('budgets.category','budgets.amount')
->get();
嘗試這個:
$budgets = array();
$budgets = Budget::join('transactions', 'budgets.id', '=', 'transactions.category','left outer')
->select([
DB::raw('SUM(transactions.amount) / budgets.amount * 100 as percent'),
'budgets.category'
])
->where('transactions.user_id','=', $authId)
->where('budgets.user_id','=',$authId)
->whereBetween('transactions.created_at', array($first_day_this_month, $last_day_this_month))
->groupBy('budgets.category','budgets.amount')
->get();
if( count($budgets) == 0 )
{
return 0;
}
else
{
return $budgets;
}
說明:最初$budgets
是一個空白array()
,在運行查詢后,如果該數組仍然為空,則表示查詢不返回任何數據。 在這種情況下,返回0,否則返回數據數組。
您應該使用COALESCE函數:
替代
DB::raw('SUM(transactions.amount) / budgets.amount * 100 as percent'),
'budgets.category'
同
DB::raw('COALESCE(SUM(transactions.amount), 0) / budgets.amount * 100 as percent'),
'budgets.category'
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.