关系不显示相关字段Laravel

时间:2018-08-09 08:30:47

标签: laravel-5 relationship

使用Laravel 5.4

我有2张桌子:原产地和咖啡。

它们之间的关系:

在咖啡模型中:

public function origin()
{
   return $this->belongsTo('App\Origin');
}

在Origin模型中:

 public function coffee()
{
   return $this->hasMany('App\Coffee');
}

在我的控制器中,我有以下方法:

$origins = Origin::with(['coffee' => function ($query) {
            $query->where('active', 1);
            $query->orderBy('name', 'asc');
        }])->orderBy('name', 'asc')->get();

我认为:

@foreach($origins as $origin)
    {{ $origin->name }}
    <pre>{{ $origin->coffee->name }}</pre>
@endforeach

我收到此错误:

此集合实例上不存在属性[name]。

如果我编码:

@foreach($origins as $origin)
        {{ $origin->name }}
        <pre>{{ $origin->coffee }}</pre>
    @endforeach

我得到了所有属于原产地的咖啡。

我在做什么错了?

1 个答案:

答案 0 :(得分:1)

$origin->coffee是一个集合,而不是单个对象。您的模型还告诉我们,一个Origin模型有很多 Coffee模型。

要列出当前coffee中的所有origin

@foreach($origins as $origin)
    {{ $origin->name }}

    @foreach($origin->coffee as $coffee)
    <pre>{{ $coffee->name }}</pre>
    @endforeach
@endforeach