这是我的桌子
:帐户科目表类别
id
名称
:帐户图表
id
chart_of_accounts_category_id
:总帐本
id
transaction_id
chart_of_accounts_id
:交易
id
名称
日期
总计
this is what i want to achieve
控制器
$chart_of_accounts_category = ChartOfAccountsCategory::get();
return view ('backend.ledger_book.index', compact('chart_of_accounts_category'));
刀片/视图
@foreach ($chart_of_accounts_category as $account_category )
@foreach ($account_category->ChartOfAccounts as $item)
$item->LedgerBook->where('chart_of_accounts_id', $item->id)->sum('transaction.total'), 2)
@endforeach
@endforeach
我可以通过这得到总和,但是我仍然需要过滤一些东西,这是我在刀片中完成的。但是无法使过滤器正常工作,尤其是在像符号%那样的情况下,我会尽量减少刀片内的查询,是否有任何地方可以通过控制器获得结果?
$item->LedgerBook->where('chart_of_accounts_id', $item->id)->where('transaction.date', 'like', '2019-06-%')->sum('transaction.total'), 2)
答案 0 :(得分:0)
您可以使用
代替'like'运算符
->whereYear('transaction.date', '2019')->whereMonth('transaction.date', '06')
。
此外,我建议您在控制器中使用eager load ChartOfAccounts
,LedgerBook
和Transaction
。这将使您的foreach
循环更快。
$chart_of_accounts_category = ChartOfAccountsCategory::with(['chartOfAccounts' => function ($query) {
$query->with(['ledgerBooks' => function ($query) {
$query->with(‘transaction’)
->whereHas(‘transaction', function ($query) {
$query->whereYear('date', '2019')
->whereMonth('date', '06');
});
}]);
}])
->get();