php artisan migrate:fresh --seed 使用的困惑
使用版本 Laravel 11
PHP 版本:8.2
问题描述?
如下将 users 数据表的迁移文件中 name 字段更改成了唯一,以实现允许用户使用用户名登录
$table->string('name')->unique();
users 数据工厂中对 name 字段如下填充
'name' => fake()->unique()->userName(),
问题来了,使用单独的 User 工厂填充没有问题,如下
php artisan db:seed --class=UserSeeder
但是如果使用所有 seed 运行
php artisan db:seed
这样会首先 users 表 name 字段报错,命令窗口报错如下
SQLSTATE[23000]: Integrity constraint violation: 1062 Duplicate entry 'Test User' for key 'users.users_name_unique' (Connection: mysql, SQL: insert into `users` (`name`, `email`, `email_verified_at`, `password`,
查看了数据表 users 发现有插入一条数据,看起来第二次就 name 字段导致重复
疑惑的是,为什么单个运行 php artisan db:seed –class=UserSeeder 就可以,运行整个 seed 就不行,询问了 GPT 说数据表有关联,我的 seed 里都没有使用模型关联填充。
感谢解答
推荐文章: