Laravel Query Builder从加入计算

时间:2016-06-07 07:56:33

标签: php mysql laravel query-builder

因此,在我的数据库中,我有一个名为website_tags的表,其中包含id, title等等,而且我还有一个名为websites的表,其结构相似。还有一个名为assigned_tags的表,其中包含标记和网站之间的关系,因此它包含关系id, tag_id and website_id

我需要的是将这些表与查询联系起来,我需要获取所有标记并计算这些标记的使用次数。因此,例如website_tags包含以下信息:

1: men
2: women

分配的标签包含类似id:tag_id:website_id

1: 1: 1
2: 1: 2
3: 2: 2

所以我会在2个网站上使用'men'标签,并在1中使用'women'标签。我应该如何构建查询? 现在我有:

DB::table('website_tags')
->join('assigned_tags', 'website_tags.id', '=', 'assigned_tags.tag_id')
->select('website_tags.id as id', 'website_tags.title as title', DB::raw("count(assigned_tags.tag_id) as count"))-
>get();

但这是错误的,此查询只计算assigned_tags中的行。

1 个答案:

答案 0 :(得分:11)

你必须定义groupBy所以查询将知道如何计算它(就像在常规SQL中一样)

尝试这样的事情

DB::table('website_tags')
->join('assigned_tags', 'website_tags.id', '=', 'assigned_tags.tag_id')
->select('website_tags.id as id', 'website_tags.title as title', DB::raw("count(assigned_tags.tag_id) as count"))
->groupBy('website_tags.id')
->get();