如何为通知添加关系?并以 json 格式获取相关数据



我正在尝试创建关系,当通过$user->unreadNotifications获取通知时,我想控制显示哪些字段,并获取关系。我不知道在哪里做这个。

我做了以下工作:

  1. php artisan notifications:table
  2. php artisan make:migration add_relations_to_notifications_table
  3. 在此新迁移中,我添加了requester_id .

    $table->integer('requester_id')->unsigned()->nullable();
    $table->foreign('requester_id')->references('id')->on('users')->onDelete('cascade');
    
  4. php migrate

  5. 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
    ];
}

因此,对于关系数据或任何其他数据,只需在此方法中定义它。希望对您有所帮助。:)

最新更新