使用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
我得到了所有属于原产地的咖啡。
我在做什么错了?
答案 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