Laravel 播种机:调用未定义的方法 Illuminate\Notifications\Notification::getConnectionName()

Laravel seeder : Call to undefined method Illuminate\Notifications\Notification::getConnectionName()

我有两个模型之间的多对多关系:

用户

namespace App\Models;


class User extends Model
{
    use HasApiTokens, Notifiable,hasFactory;

    /**
     * The attributes that are mass assignable.
     *
     * @var array
     */
    ];

}

通知

namespace App\Models;

use Illuminate\Database\Eloquent\Factories\HasFactory;
use Illuminate\Database\Eloquent\Model;
 
class Notification extends Model
{
    /**
     * @var array
     */
    protected $guarded = ['id'];
    use HasFactory;
    /**
     * @return \Illuminate\Database\Eloquent\Relations\BelongsTo
     */
    public function user()
    {
        return $this->belongsTo(User::class);
    }

 
}

我为每个模型创建了一个 factory 和一个调用两个工厂的 Seeder 以创建 users 并将通知附加到每个模型。

NotificationUserSeeder:

<?php

namespace Database\Seeders;

use App\Models\Notification;
use App\Models\User;
use Illuminate\Database\Seeder;

class MockNotificationUser extends Seeder
{
    /**
     * Run the database seeds.
     *
     * @return void
     */


    }
}

当 运行 db:seed:

时出现此错误

Call to undefined method Illuminate\Notifications\Notification::getConnectionName()

由于您将模型名称命名为 Notification。并且在导入播种机 class 时,看起来您已经导入了

use Illuminate\Notifications\Notification;

而不是

use App\Models\Notification;

已更新 由于模型名称和 Illuminate Notification facade 的冲突,问题出在用户模型上。用户模型中未使用通知外观,因此最好删除通知导入。假设如果你正在使用 Notification illuminate 那么你可以使用任何一个导入作为别名