过滤来自'通知的通知'表'数据'场 - 拉拉维尔

时间:2017-08-29 08:55:23

标签: laravel notifications laravel-5.3

这是默认的laravel notifications data字段

{
  "type":"Update Appointment",
  "appointment_id":"379",
  "date":null,
  "updated_by":"Mahir",
  "status":"2"
}

controller我希望获得status = 2的所有通知并标记为已读

Laravel 5.3 doc显示

$user = App\User::find(1);

foreach ($user->unreadNotifications as $notification) {
    $notification->markAsRead();
}

如何修改此功能以使用status = 2

获取所有通知

更新:寻找类似的东西

$noti = $user->unreadNotifications->where('data->status',"2");

注意:我的数据库不支持json数据类型。

3 个答案:

答案 0 :(得分:2)

根据laravel 5.6:JSON Where Clauses

并使用MySQL 5.7

希望这个答案对您有帮助

答案 1 :(得分:1)

我认为,您可以创建自己的频道,(另请参阅Illuminate \ Notifications \ Channels \ DatabaseChannel),您可以在其中覆盖send()方法,以保存通知。在此之前,您可以编写迁移以更新“通知”表以添加自定义筛选字段。 请参阅:https://laravel.com/docs/5.5/notifications#custom-channels

抱歉我的英文。希望,你会明白的。

答案 2 :(得分:1)

$user = $user->unreadNotifications->where('data.complaint_id',1);

它对我来说很好用,希望对你有帮助。