[英]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.