循环数据库结果似乎只执行一次

时间:2018-05-06 23:26:38

标签: php laravel

我正在处理ajax请求并在我的控制器中查询我的数据库。

控制器:

    $prod_id = $request->prod_type;

    $data = types::where('id', $prod_id)->with('products')->get(); 

    return view('pages.types')->with('data',$data);

返回$data时,它会根据数据库中查询的type显示所有产品。但是,当在我的视图中循环$data时,它似乎只循环一次并且只显示一张卡。

查看:

            @foreach($data as $type )
        <div class="col-sm-3 mb-3">
            <div class="card h-100">
                <div class="card-body">
                    <h4 class="card-title"><a href="/products/{{$type->products[0]->id}}">{{$type->products[0]->Product_Name}}</a></h4>
                    <p class="card-text">...</p>                        
                 </div>
            </div>
        </div>
        @endforeach

我意识到我只是要求products[0]的第一个对象,但如果省略则会出现property[id] does not exists in collection instance错误。

1 个答案:

答案 0 :(得分:1)

我认为你在这里循环这个类型,但你实际上想要循环产品。试试这个:

@foreach($data[0]->products as $product )
<div class="col-sm-3 mb-3">
    <div class="card h-100">
        <div class="card-body">
            <h4 class="card-title"><a href="/products/{{$product->id}}">{{$product->Product_Name}}</a></h4>
            <p class="card-text">...</p>                        
         </div>
    </div>
</div>
@endforeach

<强>更新

好的,我已经更新了代码示例,以便它只是循环遍历第一个Type对象的产品 - 我认为这就是你想要的,因为它看起来只是控制器只获得一种类型?