我有两个表 - 角色 和用户。在角色内部,我有一条记录。
{
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]: Integrity constraint violation: 1452 Cannot add or update a child row: a foreign key constraint fails (
app
.users
, CONSTRAINTusers_role_id_foreign
FOREIGN KEY (role_id
) REFERENCESroles
(id
))
如有任何帮助,我们将不胜感激。
最佳答案
您的外键验证似乎是您错误所说的问题。
给定的上下文你的 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' => factory(Role::class)->create()->id,
];
});
请确保您的批量分配包括 role_id
关于php - 调用 Factory 时 Laravel 记录被删除,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/54086006/