这是我的数据库结构:
另外 - 表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子句放在哪里?
答案 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
。