如何在Laravel中的特定用户上使用count()进行选择?

时间:2015-06-04 10:54:04

标签: mysql laravel eloquent

这是我的数据库结构: DB structure

另外 - 表user和reciever_id引用了表id。 我使用该查询来获取每种类型的通知的计数以及来自notification_types表的该类型通知的数据。

Notification::
             select('notification_types.*', DB::raw('count(*) as total'))
             ->join('notification_types', 'notifications.type_id', '=', 'notification_types.id')
             ->groupBy('notifications.type_id')
             ->get()

我需要的是 - 在reciever_id上设置约束,我只是不知道 - 我应该把where子句放在哪里?

1 个答案:

答案 0 :(得分:2)

只需将where方法链接到get之前的任何位置,因为您的条件将应用于notifications表:

Notification::select('notification_types.*', DB::raw('count(*) as total'))
    ->join('notification_types', 'notifications.type_id', '=', 'notification_types.id')
    ->where('reciever_id', $receiverId)
    ->groupBy('type_id')
    ->get();

此外,此查询无需按notifications.type_id分组,type_id也可以,因为此处没有创建歧义,因为没有其他列名为type_id