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 里都没有使用模型关联填充。

感谢解答

《L02 从零构建论坛系统》
以构建论坛项目 LaraBBS 为线索,展开对 Laravel 框架的全面学习。应用程序架构思路贴近 Laravel 框架的设计哲学。
《G01 Go 实战入门》
从零开始带你一步步开发一个 Go 博客项目,让你在最短的时间内学会使用 Go 进行编码。项目结构很大程度上参考了 Laravel。
讨论数量: 2

执行php artisan db:seed --class=UserSeeder后直接执行的php artisan db:seed吗?没有回滚迁移吧

2个月前 评论
myoppo (楼主) 2个月前

讨论应以学习和精进为目的。请勿发布不友善或者负能量的内容,与人为善,比聪明更重要!