我的系统包含用户,帖子和类别。
我雄辩的关系(省略反转)如下:
用户<select name="size" onchange="xDeckChangePrice(this)">
<option value="4.5">6 Inch</option>
<option value="7">Footlong (+£2.50)</option>
</select>
<h1 style="color:red;" id="mixingDeckTotal">£4.50</h1>
帖子。
发布hasMany
用户。
发布belongsTo
类别。
我想检索特定用户使用过的所有类别,例如以下内容:
hasOne
显然,上述方法不起作用,我只是把它放在那里提出这个想法。
感谢您的帮助!
答案 0 :(得分:1)
假设您与类别的帖子 belongsTo
关系名为 category ,您可以这样做:
$user->load('posts.category');
$user->posts->each(function ($post) {
$post->category->id;
});
修改强>
您可以为用户模型添加hasManyTrough
关系,然后您就可以通过这些帖子访问该用户的所有类别。添加到用户类:
public function categories()
{
return $this->hasManyThrough('App\Category', 'App\Posts');
}
然后你可以像这样使用它:
$user->load('categories');
$categories = $user->categories;
这将获取属于该用户的所有帖子的所有类别。 请注意,您的模型名称空间可能不同。
答案 1 :(得分:0)
使用嵌套的whereHas()
并约束来过滤特定用户。
$categories=Category::whereHas('post.user', function($q) use($id)
{
$q->where('id',$id); //constrain on user
})->get();
答案 2 :(得分:0)
可能有很多不同的方法来实现你所追求的目标。