Foreach дает мне данные для первого цикла и пустой коллекции и далее - PullRequest
0 голосов
/ 12 сентября 2018

У меня есть 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'));
}

Когда я вижу, я получаю следующее:

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'), я получу эту вторую коллекцию, но не первую.

Что я делаю не так?Я новичок в этом, и я уверен, что способ решить эту проблему прост.Но я действительно не знаю, в чем проблема.

1 Ответ

0 голосов
/ 15 сентября 2018

Мэтью, спасибо за ответ. Вы поставили меня на путь, которого я не знал, что он существует. Я изменил весь этот 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');
    }
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...