Laravel php объединяет два foreach - PullRequest
0 голосов
/ 27 ноября 2018

В моем файле blade.php я пытаюсь объединить два цикла foreach для отображения данных в таблице.Я пытался использовать что-то вроде вложенного цикла, но он не работает.

@foreach($cat->products as $idx => $product)
    <tr ng-init="item.items[{{$cat->id}}][{{$idx}}] = {};">
    @foreach ($queryInv as $querInvs)
        <td>{{$product->sku}}</td>
        <td>{{$product->name}}</td>
        <td class="text-right">{{{$querInvs->total or 0}}}</td>
    </tr>
    @endforeach
@endforeach

Мне просто нужно вставить все данные в таблицу.Теперь итоговое значение отображается правильно, но оно будет дублировать sku и имя в таблице.

1 Ответ

0 голосов
/ 27 ноября 2018

Определите массив, который мы будем использовать в качестве «флага», и на каждой итерации проверяем, НЕ находится ли текущий SKU продукта в нашем массиве «флага».Если это не так, мы отображаем и добавляем текущий SKU продукта в список обработанных SKU и продолжаем в обычном режиме.

@php $skus = [] @endphp
@foreach($cat->products as $idx => $product)
    @if (!in_array($product->sku, $skus))
        <tr ng-init="item.items[{{$cat->id}}][{{$idx}}] = {};">
            @foreach ($queryInv as $querInvs)
                <td>{{$product->sku}}</td>
                <td>{{$product->name}}</td>
                <td class="text-right">{{{$querInvs->total or 0}}}</td>
            @endforeach
        </tr>
        @php array_push($skus, $product->sku); @endphp
    @endif
@endforeach

Примечание: Вы используете Laravel 4,текущая версия Laravel - 5.7, я бы абсолютно обновил и использовал последнюю версию.

Материал для чтения

in_array

array_push

...