我正在尝试实施一个博客类型的网站,用户可以对帖子进行评分。所以关系是这样的:
Blog -> blog_links; To Many fk = blog_id
User -> blog_links; To Many fk = user_id
我尝试过这些解决方案,每次都会遇到不同的错误:
User::hasManyThrough(Blog::class, BlogLink::class);
那没用,所以我尝试了查询范围:
scopeWithLinksAndResorts($query) {
return $query->with(['resorts' => function($q) {
$q->ordered()->withLinks();
}]);
}
这似乎没有返回任何结果。所以我不确定我在这里做错了什么。这是一个表格示例:
博客
id Title Text
1 Test This is a test blog
用户
id email
1 test@test.com
blog_links
id blog_id user_id rating
1 1 1 4
现在,我希望得到用户评价的博客和评分。但正如我所说,我没有结果。有人能帮忙吗?
答案 0 :(得分:1)
在您的用户模型中定义博客的关系
/**
*
*/
public function blogs()
{
return $this->belongsToMany('App\Blog', 'blog_links', 'user_id', 'blog_id')->withPivot('rating');
}
然后在您的Blog模型中定义用户的关系
/**
*
*/
public function users()
{
return $this->belongsToMany('App\User', 'blog_links','blog_id', 'user_id');
}
要让所有用户使用他们的博客和评分,您可以\App\User::with('blogs')->get()
我不确定这是否是你想要的,但希望它有所帮助。