【发布时间】:2013-09-14 17:29:38
【问题描述】:
我有两个对象,例如 Post 和 Tag 具有多对多关系。
基于标签集合,我想选择与 (1) 任何标签或 (2) 集合中的所有标签匹配的所有帖子。
有没有一种简单的方法可以在 Laravel 中执行这些查询(最好使用 Eloquent)?
【问题讨论】:
标签: laravel laravel-4 relationship eloquent
我有两个对象,例如 Post 和 Tag 具有多对多关系。
基于标签集合,我想选择与 (1) 任何标签或 (2) 集合中的所有标签匹配的所有帖子。
有没有一种简单的方法可以在 Laravel 中执行这些查询(最好使用 Eloquent)?
【问题讨论】:
标签: laravel laravel-4 relationship eloquent
你查询你想要的标签,然后你可以遍历每个标签帖子p>
$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;
}
}
【讨论】:
$query = $query->sortBy('name'); 对它们进行排序