我有基于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;
.

许可以下: CC-BY-SA归因
不隶属于 StackOverflow
scroll top