我在文章/博客和它的类别之间有多对多的关系。与用户名没有直接关系。
现在我想根据给定的类别检索博客列表。但是我不知道如何从文章和类别之间现有的多对多关系中获取用户名。
数据库关系:
用户:用户 ID 用户名
分类: id 标题
博客:id 标题
blog_category: id blog_id category_id
我试图在博客类中使用雄辩的方法'user()'
$category = Category::with('blogs')->findOrFail($request['category']);
行,但这不起作用,因为它是类别模型而不是博客模型。
Blog 模型中的 Eloquent 方法:
public function categories()
{
return $this->belongsToMany('App\Category', 'blog_category');
}
Category 模型中的 Eloquent 方法:
public function blogs()
{
return $this->belongsToMany('App\Blog', 'blog_category','category_id','blog_id');
}
User 模型中相关的 Eloquent 方法:
public function blog()
{
return $this->hasMany(Blog::class, 'user_id');
}
public function user()
{
return $this->belongsTo('App\User','user_id','id');
}
CategoryController 的显示方法
public function show(Request $request, Category $category)
{
$category = Category::with('blogs')->findOrFail($request['category']);
$blog = $category->blogs()->get();
return view('blog.category', compact('category','blog','user'));
}
我假设 Laravel 自动为我提供了从博客和用户之间的现有关系中获取 $blog->user 的选项。但它不允许我,因为我从 Category 对象内部开始。如何在博客模型中使用与类别模型相关的 Eloquent 方法?