【发布时间】:2019-06-02 19:17:18
【问题描述】:
我有两个表 - Roles 和 Users。在 Roles 内部,我只有一条记录。
{
id: 1, name: Employee, timestamps: blahblah
}
奇怪的是,每当我调用我的用户工厂(它有一个字段 role_id 的外键)时,它都会删除 Roles 表中的记录。它也使工厂实例化的创建失败,说 role_id 外键约束失败。我不知道为什么会这样。
这是用户工厂的代码。我已经对值进行了硬编码,直到我弄明白为止。
$factory->define(App\User::class, function (Faker $faker) {
return [
'name' => $faker->name,
'email' => $faker->unique()->safeEmail,
'email_verified_at' => now(),
'password' => Hash::make("12341234"),
'remember_token' => str_random(10),
'company_id' => 1,
'role_id' => 1,
];
});
还有错误:
Doctrine\DBAL\Driver\PDOException: SQLSTATE[23000]: 完整性 违反约束:1452 无法添加或更新子行:外国 键约束失败 (
app.users, CONSTRAINTusers_role_id_foreign外键 (role_id) 引用roles(id))
任何帮助将不胜感激。
【问题讨论】:
-
这个错误说明找不到角色表。此工厂代码在执行角色表之前执行。如果可以使用外键,只需更改数据库表的执行顺序即可。
-
你执行的命令是什么?
-
不知道你说的执行顺序是什么意思。我知道它可以找到角色表,因为我可以在 Tinker 中创建和细化角色记录。
标签: php mysql laravel pdo factory