我有两个表叫做categories
和resources
表。
基本上每个资源都有一个类别,类别id保存在resources
表的resource_category_id
列中。
因此,为了在模型之间建立一对多关系,我做了这些:
Category
:
class Category extends Model
{
protected $table = "categories";
protected $guarded = [];
public function resources()
{
return $this->hasMany(Resource::class);
}
}
Resource
:
class Resource extends Model
{
protected $table = "resources";
protected $guarded = [];
public function category()
{
return $this->belongsTo(Category::class, 'resource_category_id');
}
}
现在我想显示所有的类别和资源,它们具有相同的resource_category_id
,像这样:
@php($menuCounter = 0)
@foreach($categories as $cat)
<tr>
<td style="text-align:center">{{ ++$menuCounter }}</td>
<td style="text-align:center">{{ $cat->category_name }}</td>
<td>
<ul>
@foreach($category->resources() as $resource)
<li><a href="{{ $resource->resource_link }}">{{ $ress->resource_name }}</a></li>
@endforeach
</ul>
</td>
</tr>
@endforeach
但是现在类别都出现了,但是资源没有显示,也没有错误返回!
那么这里出了什么问题?
如何通过雄辩关系方法显示resource_category_id
中的资源?
而不是:
@foreach($category->resources() as $resource)
@foreach($category->resources as $resource)
第一个是加载构建器,第二个是加载集合。
还可以在Category Model中指定资源关系的外键:
public function resources()
{
return $this->hasMany(Resource::class, 'resource_category_id');
}