我有两个表-角色和用户。在角色里面,我只有一张唱片。
{
id: 1, name: Employee, timestamps: blahblah
}
奇怪的是,每当我调用我的用户工厂(它有一个字段role\ id的外键)时,它就会删除roles表中的记录。它还无法创建工厂示例化,表示role\u 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,
];
});
错误是:
条令\dbal\driver\pdoexception:sqlstate[23000]:完整性约束冲突:1452无法添加或更新子行:外键约束失败( app
. users
,约束 users_role_id_foreign
外键( role_id
)参考文献 roles
( id
))
任何帮助都将不胜感激。
2条答案
按热度按时间cxfofazt1#
正如您所说的,外键验证似乎是问题所在。
给定的上下文中,您的角色id似乎是外键,您只是在传递一个任意值,您永远不会使用它。
要解决这个问题,您必须创建一个工厂方法来创建一个新角色,并执行以下操作
确保你的大规模分配包括角色\u id
dauxcl2d2#
虽然我无法找出与此相关的确切奇怪之处,但我相信这与phpunit的数据库配置有关。我在phpunit.xml中添加了以下行,解决了这个问题。
还值得一提的是,由于测试使用的是refreshdatabase,所以删除了角色实体。