laravel - Foreach 给我第一个循环和空集合的数据
问题描述
我的控制器中有一个 foreach 传递给视图:
public function index()
{
$budgets=\App\Budget::all();
$transactions=\App\Transaction::select('transaction_ammount');
foreach($budgets as $budget){
$budgetThisCategory[$budget->id]=$transactions->whereMonth('transaction_date',Carbon::today()->format('m'))->where('category_id',$budget->category_id)->get();
}
return view('budgets.index',compact('budgets','id','transactions','budgetThisCategory'));
}
当我 dd 我的观点时,我得到以下信息:
array:2 [▼
1 => Collection {#832 ▼
#items: array:6 [▼
0 => Transaction {#825 ▶}
1 => Transaction {#826 ▶}
2 => Transaction {#827 ▶}
3 => Transaction {#828 ▶}
4 => Transaction {#829 ▶}
5 => Transaction {#830 ▶}
]
}
2 => Collection {#868 ▼
#items: []
}
]
所以我只得到了我的第一个 foreach 集合,但没有得到我的第二个集合。第二个有数据。事实上,如果我更改我的控制器并添加一个 orderbydesc('$budget_id') 我将得到第二个集合,但不是第一个。
我究竟做错了什么?我对此很陌生,我相信解决这个问题的方法很简单。但我真的不知道有什么问题。
解决方案
马修感谢您的回答。你让我走上了一条我不知道它存在的道路。我已经把所有的 foreach 变成了一个完全不同的东西,更漂亮更简单。另外,我添加了一些功能。我想有更好的方法来做到这一点。但我真的很高兴我到达的地方。
$budgets=\App\Budget::get();
foreach($budgets as $budget){
$budgetCount[$budget->id]=$budget->find($budget->id)->transactions()->whereMonth('transaction_date',Carbon::today()->format('m'))->count();
$budgetSum[$budget->id]=$budget->find($budget->id)->transactions()->whereMonth('transaction_date',Carbon::today()->format('m'))->sum('transaction_ammount');
}
推荐阅读
- python - 如何使用 Tesseract 对图像进行 OCR
- filter - Spring Integration - 过滤器 - 将消息发送到不同的端点
- json - 尝试使用 jq shell 脚本解析 JSON 数据时观察到语法错误
- php - 期待异常phpunit后继续测试
- mongodb - MongoDB:使用 mongoimport 和 --columnsHaveTypes --headerline 添加日期
- java - 添加设计支持库
- c++ - 如何设置按钮以在 Windows 登录屏幕上打开应用程序
- bash - 重击。返回两个函数级别(两个嵌套调用)
- ruby-on-rails - Rspec 从反应下拉列表中选择选项
- java - 如何在 Spring Boot WebApplication 中集成 Apache Tiles?