如何在Laravel中更改默认通知表名称

时间:2017-07-18 12:24:33

标签: php laravel notifications

我想更改notification表名,因此我更改了迁移文件:

php artisan notification:table

Schema::create('member_notifications', function (Blueprint $table) {
      $table->uuid('id')->primary();
      $table->string('type');
      $table->morphs('notifiable');
      $table->text('data');
      $table->timestamp('read_at')->nullable();
      $table->timestamps();
});

尝试在$table类中使用Notification

protected $table = 'member_notifications';

但是当我尝试在数据库中存储通知时,我收到此错误:

SQLSTATE[42P01]: Undefined table: 7 ERROR: relation "notifications" does not exist

2 个答案:

答案 0 :(得分:5)

如果要将默认的 notifications 表更改为自定义表,则应做以下三件事:

  1. 将迁移文件中的表名称更改为member_notifications。运行迁移。
  2. 创建模型,例如DatabaseMemberNotification。从Illuminate\Notifications\DatabaseNotification扩展它并覆盖属性

    protected $table = 'member_notifications';
    
  3. 在默认的User模型中,请添加以下功能:

    public function notifications()
    {
        return $this->morphMany(DatabaseMemberNotification::class, 'notifiable')->orderBy('created_at', 'desc');
    }
    

    实际上,它将覆盖notifications()特征中的HasDatabaseNotifications方法。

    注意:第一个参数应该是您的新模型类。

答案 1 :(得分:-2)

转到vendor / laravel / framework / src / Illuminate / Notifications / DatabaseNotification.php

并将protected $ table更改为所需的表名

在你的情况下

protected $table = 'member_notifications';