Laravel просмотр foreach с двумя свойствами - PullRequest
1 голос
/ 14 февраля 2020

мне нужна помощь с моим foreach l oop в поле зрения

Контроллер. php

$expenses = Expense::groupBy('category_id')->selectRaw('sum(amount) as sum, category_id')->pluck('sum','category_id');

$categories = Category::all();

return view('dashboard.index', compact('expenses','categories'));

index. php

          <table class="table">
            <thead>
              <th>Category</th>
              <th>Expenses</th>
            </thead>
            <tbody>
              @foreach($categories as $category)
              <tr>
                <td>{{ $category->name }}</td>
                @foreach($expenses as $expense)   
              <td>{{ $expense }}</td>
              @endforeach
              </tr>
              @endforeach
            </tbody>
          </table>

Я получаю вывод, подобный этому.

введите описание изображения здесь

Это выводит расход 2 раза, есть ли ограничитель для "foreach l oop" или есть другой способ сделать это?

Ответы [ 3 ]

1 голос
/ 14 февраля 2020

Вы должны ограничить результаты в контроллере, но вот как вы можете выполнить sh это в блейде. Не очень

@foreach ($element['subs'] as $item)
    @if($loop->index < 10)
        // Your code
    @endif
@endforeach
0 голосов
/ 14 февраля 2020

Вы должны сравнить category_id с category->id.

@foreach($categories as $category)
<tr>
    <td>{{ $category->name }}</td>
    @foreach($expenses as $expense)
        @if($expense->category_id == $category->id )   
            <td>{{ $expense->sum }}</td>
        @endif
    @endforeach
</tr>
@endforeach
0 голосов
/ 14 февраля 2020

Вам необходимо добавить условие, для которого $category->id совпадает с category_id

 @foreach($expenses as $key => $expense)   
    @if($key == $category->id)
    <td>{{ $expense }}</td>
    @endif
@endforeach

. Правильный способ сделать это - использовать соединение или связь.

$expenses = Expense::join('categories','categories.category_id','expenses.category_id')->groupBy('expenses.category_id')->selectRaw('sum(expenses.amount) as sum, expenses.category_id','categories.name')->get();

<table class="table">
    <thead>
      <th>Category</th>
      <th>Expenses</th>
    </thead>
    <tbody>

         @foreach($expenses as $expense)   
          <th>{{ $expense->name }}</th>
          <td>{{ $expense->sum }}</td>
         @endforeach
  </tbody>
</table>
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...