Laravel вложенная петля - PullRequest
       33

Laravel вложенная петля

0 голосов
/ 21 декабря 2018

Я получаю сообщение об ошибке, пытаясь выполнить вложенный цикл в лезвии @ foreach

Это то, что я пробовал, да, я использую 2 key на нем ... Есть ли способОтношение это?

вот мой код контроллера

$product = Product::where($where)->get();
        foreach($product as $key=>$value){
            if($value->SupplierID){
                $product[$key]['SupplierName'] = Company::find($value->SupplierID)->CompanyName;
            }else{
                $product[$key]['SupplierName'] = '-';
            }

            $product[$key]['ProductName'] = $value->getProdNameOne()->ProductName;

        }

        if(!empty(Auth::user())){
            $userid = Auth::user()->id;

            $companyfromusers = Companypersonstruct::where('user_id','=',$userid)->first();

            if(!empty($companyfromusers->user_id)){
                $companyrelationstruct = CompanyRelationStruct::where('FromCompanyID','=',$companyfromusers->CompanyID)->get();

                if(!empty($companyrelationstruct)){
                    foreach($companyrelationstruct as $key=>$crs){
                        $relatedcompany[] = Company::where('id','=',$crs->ToCompanyID)->get();
                    }
                } else {
                    $relatedcompany = '-';
                }
            } else {
                $relatedcompany = '-';
            }
        }

и это мой код просмотра

@foreach ($product as $key=>$products)
        <tr>
        <th scope="row">{{ $products->ProductNumber }}</th>
        <td><a href="/detailproduct/{{ $products->id }}" target="_blank"> {{ $products->ProductName }}</a></td>
    @if(\Auth::user())
      @foreach($relatedcompany[$key] as $keychild=>$valchild)
        <td>{{ $valchild->CompanyName }}</td>
      @endforeach
        <td>{{ $products->UnitCustPrice }}</td>
    @endif
        </tr>
    @endforeach

Это ошибка, которую я получаю:

Неопределенное смещение: 2

Ответы [ 2 ]

0 голосов
/ 21 декабря 2018

Вы должны попробовать это:

@foreach ($product as $key=>$products)
        <tr>
        <th scope="row">{{ $products->ProductNumber }}</th>
        <td><a href="/detailproduct/{{ $products->id }}" target="_blank"> {{ $products->ProductName }}</a></td>
    @if(\Auth::user())
      @if(isset($relatedcompany[$key]))
        @foreach($relatedcompany[$key] as $keychild=>$valchild)
          <td>{{ $valchild->CompanyName }}</td>
        @endforeach
      @endif
        <td>{{ $products->UnitCustPrice }}</td>
    @endif
        </tr>
    @endforeach
0 голосов
/ 21 декабря 2018

Я полагаю, что есть несколько проблем, которые можно решить.

$product = Product::where($where)->get();
foreach ($product as $key => $value) {
    if ($value->SupplierID) {
        $product[$key]['SupplierName'] = Company::find($value->SupplierID)->CompanyName;
    } else {
        $product[$key]['SupplierName'] = '-';
    }
    $product[$key]['ProductName'] = $value->getProdNameOne()->ProductName;
}

$relatedcompany = false;
if (!empty(Auth::user())) {
    $userid = Auth::user()->id;

    $companyfromusers = Companypersonstruct::where('user_id', '=', $userid)->first();
    $relatedcompany = array();

    if (!empty($companyfromusers->user_id)) {
        $companyrelationstruct = CompanyRelationStruct::where('FromCompanyID', '=', $companyfromusers->CompanyID)->get();
        if (!empty($companyrelationstruct)) {
            foreach ($companyrelationstruct as $crs) {
                $relatedcompany[] = Company::find($crs->ToCompanyID);
            }
        }
    }
}

Предполагается, что вы правильно передали переменные, это код представления, который может работать с $product и $relatedcompany выше.

@foreach ($product as $key=>$products)
  <tr>
    <th scope="row">{{ $products->ProductNumber }}</th>
    <td><a href="/detailproduct/{{ $products->id }}" target="_blank"> {{ $products->ProductName }}</a></td>
    @if ($relatedcompany !== false)
        @forelse ($relatedcompany as $company)
          @if ($company)
            <td>{{ $company->CompanyName }}</td>
          @endif
        @empty
          <td>-</td>
        @endforelse
      <td>{{ $products->UnitCustPrice }}</td>
    @endif
  </tr>
@endforeach
...