0
我有两个对象,如Post
和Tag
,它们具有多对多的关系。Laravel:基于多对多关系的筛选器查询
基于一组标签,我想选择与(1)任何标签或(2)集合中所有标签匹配的所有帖子。
有没有一种简单的方法在Laravel中执行这些查询(最好是使用Eloquent)?
我有两个对象,如Post
和Tag
,它们具有多对多的关系。Laravel:基于多对多关系的筛选器查询
基于一组标签,我想选择与(1)任何标签或(2)集合中所有标签匹配的所有帖子。
有没有一种简单的方法在Laravel中执行这些查询(最好是使用Eloquent)?
你查询你想要的标签,那么你可以循环遍历每个标签的帖子与
$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;
}
}
谢谢!但最终我希望收集可以排序的帖子。您的解决方案只给我一个帖子名称(或对象)列表,按标签排序。另外:我不太明白你的答案的第二部分是如何与我的问题相关的。你能否多加一点解释? – severin
当使用我的第二个示例时,它会查找名称为“Some post name”的所有帖子,然后为每个帖子找到tag_name为“Laravel”的标签。这可能正是你需要的,因为你也可以用'$ query = $ query-> sortBy('name'); – user1669496