题
我有基于oder的帖子和标签表。标签分配在枢轴表上发布。在我使用以下模型关系的Laravel中获取帖子 - >标签。
//Model: Post
public function tags()
{
$this->belongsToMany('Tag', 'post_tag', 'post_id', 'tag_id');
}
.
这是我的数据库:
post
id
tags
id
post_tag
post_id
tag_id
.
问题
我想检索具有谍标签名称的所有帖子。
我尝试了什么
具有急切加载的Post::with(array('tags' => function($query)
{
$query->where('id', '=', 44);
}))->get();
。但是诚信错误。
我还尝试了查询关系,抛出非对象错误。
Post::whereHas('tags', function($q)
{
$q->where('id', '=', $tag_id);
})->get();
. 解决方案
关系是双向的
您需要定义模型标记 作为
class Tag{
public function posts()
{
return $this->belongsToMany('Post');
}
}
.
然后你可以做
$posts = Tag::find(44)->posts;
. 不隶属于 StackOverflow