如何添加通知关系?并在json中获取相关数据

时间:2018-01-15 09:20:07

标签: laravel laravel-5.5

我正在尝试创建关系,当通过$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
  6. 然后在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完成时显示哪些字段?

1 个答案:

答案 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
    ];
}

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