我正在尝试创建关系,当通过$user->unreadNotifications
提取通知时,我想控制显示哪些字段,并获取关系。我无法弄清楚在哪里这样做。
我做了以下事情:
php artisan notifications:table
php artisan make:migration add_relations_to_notifications_table
在这次新迁移中,我添加了requester_id
。
$table->integer('requester_id')->unsigned()->nullable();
$table->foreign('requester_id')->references('id')->on('users')->onDelete('cascade');
php migrate
php artisan make:notification AnInviteWasRequested
然后在AnInviteWasRequested
我删除了toArray
并将其替换为toDatabase
:
public function toDatabase($notifiable)
{
return [
'requester_id' => Auth::guard('api')->user()->id
];
}
但是,这不会设置requester_id
字段,只是将json放入data
列,如下所示:{"requester_id":1}
。
是否仍然要更新requester_id
字段而不是更新data
?
还有可能在某个地方,比如模型文件(不在vendor
dir中)来控制$user->unreadNotifications
完成时显示哪些字段?
答案 0 :(得分:0)
实际上要定义要显示/保存的字段,然后需要显示它,您只需要修改toDatabase
方法。例如:
public function toDatabase($notifiable)
{
$user = Auth::guard('api')->user();
return [
'requester_id' => $user->id,
'requester_name' => $user->name,
// and more data that you need to show
];
}
因此,对于关系数据或任何其他数据,只需在此方法中定义它。希望能帮助到你。 :)