通过许多Eloquent检索许多

时间:2017-03-08 12:45:41

标签: php laravel-5 eloquent

我的系统包含用户,帖子和类别。

我雄辩的关系(省略反转)如下:

用户<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

显然,上述方法不起作用,我只是把它放在那里提出这个想法。

感谢您的帮助!

3 个答案:

答案 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)

可能有很多不同的方法来实现你所追求的目标。

on filebeat configuration