播种时完整性违规

时间:2016-04-06 05:15:29

标签: mysql laravel foreign-keys

这是我在下面的播种机课程

    A   B   C               D
0   1   96  12              apples
2   3   45  15              peaches
4   5   8   42              pears

这是我的levelseeder课程:

<?php

use Illuminate\Database\Seeder;

class RequestTableSeeder extends Seeder
{
public function run()
{
     $faker = Faker\Factory::create();

     for($i=1;$i<=5;$i++){
        DB::table('requests')->insert([
            "location_id"=>$faker->numberBetween(1,5),
            "level_id"=>$faker->numberBetween(0,1),
            "subject_id"=>$faker->numberBetween(0,1),
            "first_name"=>$faker->firstName,
            "last_name"=>$faker->lastName,
            "contact"=>$faker->unique()->phoneNumber,
            "email"=>$faker->unique()->email,
            "description"=>$faker->text(1000),
            ]);
     }
}
}

当我尝试从命令中获取种子时:

<?php

use Illuminate\Database\Seeder;

class SubjectTableSeeder extends Seeder

{

public function run()
{


$faker = Faker\Factory::create();

    for($i=1;$i<=5;$i++)
    {
        DB::table('subjects')->insert([
            "name"=>$faker->text(5),
            ]);
    }
}
}

我还查看了我的主题播种员课程。但是我找不到错误。This are my seeder class

1 个答案:

答案 0 :(得分:0)

您正在尝试插入引用level_id表格中不存在的行的level

为了实现这一点,您的level表格需要至少有5条记录,其中id为1,2,3,4,5

如果你这样做,也许你的播种者的顺序是错误的。确保LevelTableSeederRequestTableSeeder之前运行。

此外,subject_id似乎很可能在接下来失败。使用 foreign keys 时,这是用于确保数据库完整性的行为。

相关问题