Laravel:根据多对多关系过滤查询

时间:2013-09-10 20:49:32

标签: laravel laravel-4 relationship eloquent

我有两个对象,比如PostTag,它们具有多对多的关系。

根据标签集合,我想选择与(1)任何标签匹配的所有帖子或(2)集合中的所有标签。

是否有一种简单的方法可以在Laravel中执行这些查询(最好使用Eloquent)?

1 个答案:

答案 0 :(得分:-1)

您查询所需的标签,然后您可以使用

循环浏览每个标签帖子
$tags = Tag::where('name','=','Laravel 4')->get();
foreach($tags as $tag)
{
    foreach($tag->posts as $post)
    {
        echo $post->name;
    }
}

这是假设您已正确设置关系和数据透视表。

您还可以根据某些帖子急切加载某些代码...

$posts = Post::where('name','=','Some post name') ->with(array('tags' => function($query) { $query = $query->where('tag_name','=','Laravel'); }))->get();

foreach($posts as $post)
{
    foreach($post->tags as $tag)
    {
        echo $tag->tag_name;
    }
}