如何在 Laravel 中通过 toArray / toDatabase 函数指定通知属性?

Art*_*gio 4 notifications laravel eloquent laravel-5 laravel-5.3

Laravel 的通知允许notifications使用toArray或将数据保存在表中toDatabase。但文档没有澄清两件事。

  1. 在表中存储数据时toArray()和时有什么区别?toDatabase()notifications

  2. 我在表中添加了一个附加属性 ( link) notifications,但是当我这样做时:

    public function toDatabase() {
        return [
            'data'=>'My Data',
            'link'=>'My Link'
        ];
    }
    
    Run Code Online (Sandbox Code Playgroud)

我最终在属性下序列化了数组data。toArray()使用or函数保存属性的正确方法是什么toDatabase()?

And*_*rew 7

1)使用的方法由via()返回数组决定:

return ['mail', 'database', 'broadcast'];
Run Code Online (Sandbox Code Playgroud)

当您仅使用 toArray 时,它将使用该单个数据数组作为数据库和广播通知。如果您希望为每个数组定义单独的数组,则可以定义 toDatabase() 和 toBroadcast() 方法。

2) 由于通知内置于 Laravel 的核心中 - 没有简单的方法来更改其模型 - 即添加附加可填充字段。通知希望您将该附加字段添加到“数据”数组中。顺便说一下,仍然可以通过以下方式访问:

$notification->my_custom_data_value
Run Code Online (Sandbox Code Playgroud)