关系有一个工作在控制器,而不是在刀片


Relation hasOne work in Controller but not in blade

控制器方法:

public function panorama($id)
{
    $order = ClientOrder::find($id);
    $products = ClientProduct::where('client_order_id', $order->id)->with('product')->get();
    $conteo = count($products);
    return view('add.preview.work_panorama', compact('order', 'products', 'conteo'));
}

模型中的关系:

public function product()
{
    return $this->hasOne('App'Product', 'id', 'product_id');
}

叶片视图:

@foreach($products as $product)
    <ul class="list-unstyled">
        {{ $product->product->name }}
        @foreach($product->processes as $process)
            <li>-{{ $process->name }}</li>
        @endforeach
    </ul>
@endforeach

在视图中,$process->name可以工作,但$product->product->name打印一个空白,但在控制器中打印产品名称。

这是因为with从数据库返回一个集合对象。试着像这样使用索引。

 {{ $product->product[0]->name }}

我在compact中遇到了同样的问题,当我用下面的代码更改它时,它工作了。

return 'View::make('add.preview.work_panorama')->with('order', $order)
                                               ->with('products', $products)
                                               ->with('conteo', $conteo);
相关文章: