php - 调用 Factory 时 Laravel 记录被删除

标签 php mysql laravel pdo factory

我有两个表 - 角色用户。在角色内部,我有一条记录。

{
  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, CONSTRAINT users_role_id_foreign FOREIGN KEY (role_id) REFERENCES roles (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/

相关文章:

php - mysql_num_rows() 有什么问题?

php 表单未将日期发送到数据库 SQL

php - 如何从 laravel 中的 user_id 获取用户名?

php - Laravel Restfull Controller 和路由 ajax/sync 请求

javascript - 如何在php中允许在textarea中输入?

php - 只需从 PHP 中的字符串获取图像 URL

php - websocket 与 mysql 的连接

php - 如何用php在mysql表的列中插入数组?

php - PHP OOP更新记录,但显示错误消息

php - 在 Windows 中从 Laravel 项目中删除 Redis