2016-04-06 2 views
0

Это мой класс сеялки ниженарушения целостности во время высева

<?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), 
      ]); 
    } 
} 
} 

Вот мой levelseeder класс:

<?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), 
      ]); 
    } 
} 
} 

в то время как я пытаюсь семя из команды я получаю:

[PDOException] 
    SQLSTATE[23000]: Integrity constraint violation: 1452 Cannot add or update a child row: a foreign key constraint fails (`tutor`.`requests`, CONSTRAINT `requests_level_id_foreign` FOREIGN KEY (`level_id`) REFERENCES `levels` (`id`) ON DELETE CASCADE) 

Я также проверил свой класс сеялки. Но я не смог найти ошибку. This are my seeder class

ответ

0

Вы пытаетесь вставить level_id, который ссылается на строку в таблице level, которая не существует!

Для того, чтобы это работало ваш level стол должен быть отобран по крайней мере 5 записей с id из 1,2,3,4,5

Если вы делаете это, может быть, порядок ваших сеялки ошибочны. Убедитесь, что LevelTableSeeder работает до RequestTableSeeder.

Кроме того, кажется, что subject_id скорее всего не сработает. Это предполагаемое поведение при использовании foreign keys, которые используются для обеспечения целостности базы данных.

+0

Я вставил значение в таблицу уровней, но все же команда показывает ту же проблему. –

+0

Извините, из-за ограниченной информации, которую вы предоставили, это лучший ответ, который я могу дать. Двойная проверка, что ваши сеялки работают в правильном порядке, и дважды проверьте, что сообщение об ошибке идентично. – Moak

+0

Спасибо за ответы. Наконец-то я нашел свою ошибку. : D –

Смежные вопросы