基于一对多关系检索数据



我有两个表叫做categoriesresources表。

基本上每个资源都有一个类别,类别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');
}

相关内容

  • 没有找到相关文章

最新更新