我正在尝试创建关系,当通过$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
目录中(来控制在完成$user->unreadNotifications
时显示哪些字段?
实际上要定义要显示/保存的字段,然后您需要它来显示,您只需要修改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
];
}
因此,对于关系数据或任何其他数据,只需在此方法中定义它。希望对您有所帮助。:)