如何显示数据透视表的值? Laravel 5.3

时间:2017-04-21 04:59:02

标签: laravel pivot laravel-5.3 has-and-belongs-to-many belongs-to

我有3个型号:商店模型,产品型号,订单型号

商店模型是这样的:

class Store extends Model
{   
    protected $fillable = ['name', 'user', 'address', 'phones', 'email', 'photo'];
    ...
}

产品型号是这样的:

class Product extends Model
{
    protected  $fillable = ['store_id','category_id','name', 'photo','description'];
    ...
}

订单模型就是这样:

class Order extends Model
{
    ...
    public function products()
    {
        return $this->belongsToMany(Product::class, 'orders_products')
            ->withPivot('sub_total','quantity','price','information')->withTimestamps();
    }
    public function store()
    {
        return $this->belongsTo(Store::class);
    }
}

我有4个表:存储表,订单表,产品表,orders_products表

orders_producs表是数据透视表

在视图中,我称之为:

<a href="javascript:">{{ $order->store->name }}</a>

有效。它成功显示商店名称

我的问题是我想要显示产品名称

在查看刀片laravel我尝试:

<a href="javascript:">{{ $order->products->name }}</a>

存在错误:

  

未定义的属性:Illuminate \ Database \ Eloquent \ Collection :: $ id   (查看:...

这似乎是错误的召唤方式

我该如何解决?

1 个答案:

答案 0 :(得分:1)

由于它是belongsToMany(),您可以显示如下数据:

@foreach ($order->products as $product)
    {{ $product->name }}
    {{ $product->pivot->price }}
@endforeach