2016-04-06 3 views
0
Impfen

Dies ist meine Seeder Klasse unterIntegrität Verletzung während

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

Hier meine levelseeder Klasse:

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

während ich versuche, vom Befehl Samen i erhalten:

[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) 

Ich habe auch mein Thema Seeder-Klasse überprüft. Aber ich konnte den Fehler nicht finden. This are my seeder class

Antwort

0

Sie versuchen, eine level_id einzufügen, die auf eine Zeile in der Tabelle level verweist, die nicht existiert!

Damit dies braucht Ihre level Tabelle arbeiten mindestens 5 Datensätze werden ausgesät mit der id von 1,2,3,4,5

Wenn Sie dies tun, vielleicht die Reihenfolge der Sämaschinen sind falsch. Stellen Sie sicher, dass die LevelTableSeeder vor der RequestTableSeeder ausgeführt wird.

Weiter scheint es, dass subject_id höchstwahrscheinlich als nächstes ausfallen wird. Dies ist ein beabsichtigtes Verhalten bei Verwendung von foreign keys, die zur Gewährleistung der Datenbankintegrität verwendet werden.

+0

Ich habe den Wert in die Level-Tabelle eingefügt, aber der Befehl zeigt immer noch das gleiche Problem. –

+0

Entschuldigung, von den begrenzten Informationen, die Sie zur Verfügung gestellt haben, ist dies die beste Antwort, die ich geben kann. Überprüfen Sie, ob Ihre Sämaschinen in der richtigen Reihenfolge laufen, und überprüfen Sie, ob die Fehlermeldung identisch ist. – Moak

+0

Vielen Dank für Ihre Antworten. Endlich habe ich meinen Fehler gefunden. : D –

Verwandte Themen