搜索查询和计数会在laravel中产生多对多的关系

时间:2017-10-25 04:18:06

标签: laravel search relationship

我使用插件TokenInput来执行搜索标记。 我有两张桌子,有很多关系。表:故事,标签和数据透视表:story_tag。我执行搜索查询:

$term = request('q');
$tags = \App\Tag::where('slug', 'LIKE', '%' . $term . '%')->get();

return response()->json($tags->toArray());

它在工作。现在,我想计算数据透视表story_tag中的标签数量,并显示结果如下:

tagNamea - 69

tagNameb - 9

...

我尝试了很多搜索,但没有达到预期效果。怎么做?有帮助吗?感谢。

更新

关系模型:

故事模型:

public function tags()
{
    return $this->belongsToMany('App\Tag');
}

标记模型:

public function stories()
{
    return $this->belongsToMany('App\Story');
}

3 个答案:

答案 0 :(得分:0)

你需要有这样的关系

public function stories()
{
     return $this->belongsToMany('App\Story', 'story_tag', 'tag_id', 'story_id');
}

我不知道你需要什么样的回应,但你必须像上面提到的关系

答案 1 :(得分:0)

每当你有一个雄辩的集合,你可以在该集合上使用 count 方法。

例如:

$count = $tags->count();

如果 $ tags 是一个集合,那么您将获得 $ count 中的代码数量。

答案 2 :(得分:0)

您可以使用moment count()方法将计算集合的所有结果。