2017-11-11 3 views
0

Ich habe seit einiger Zeit mit dem Problem kämpfen und ich bin ein bisschen verzweifelt für eine Lösung, weil ich nicht so gut in Problemlösung bin. Jedenfalls versuche ich, meine Datenbank zu säen, und ich folgte einem Tutorial von Jeffrey von Laracasts in seiner Forum-Reihe, wo er eine Schnecke zu einem Thread hinzufügt. Nun, ich versuche dasselbe mit meinen Posts zu machen, aber wenn ich meine Datenbank seed, bekomme ich den Fehler im Titel, Was verursacht das?Laravel - Integrität contraint Verletzung: 1062 Doppeleintrag

ich meine Wanderung bekam hier:

public function up() 
{ 
    Schema::create('posts', function (Blueprint $table) { 
     $table->increments('id'); 
     $table->Unsignedinteger('user_id'); 
     $table->Unsignedinteger('channel_id'); 
     $table->string('title'); 
     $table->longText('text'); 
     $table->string('slug')->unique(); 
     $table->timestamps(); 
    }); 
} 

Und das ist, was ich versuche mit meinem Seeder zu tun:

public function run() 
{ 
    $faker = Faker\Factory::create(); 
    $title = $faker->sentence; 

    foreach(range(1, 30) as $index) { 
     DB::table('posts')->insert([ 
      'user_id' => rand(1, 50), 
      'channel_id' => rand(1,14), 
      'title' => $faker->sentence, 
      'slug' => str_slug($title), 
      'text' => $faker->paragraph, 
      'created_at' => Carbon::now(), 
      'updated_at' => Carbon::now(), 
     ]); 

    } 
} 

Und um diese Frage kurz zu halten, ich ll zeigen den vollständigen Fehlercode in einem Bild, das ist: https://imgur.com/a/ntQMX

Aber das Problem ist, In meiner Migration, ich legte die Schnecke zu sein einzigartig und In meinem Samen, ich habe den Titel, um gleich zu sein, die Schnecke, Und das kann nicht gemacht werden, weil Slug einzigartig ist, aber im Tutorial hat er das selbe gemacht, wie kann ich das lösen?

Vielen Dank im Voraus!

Link zu Tutorial: https://laracasts.com/series/lets-build-a-forum-with-laravel/episodes/75

Antwort

1

Sie sollten versuchen, dieses:

public function run() 
{ 
    $faker = Faker\Factory::create(); 

    foreach(range(1, 30) as $index) { 

     $title = $faker->sentence; 

     DB::table('posts')->insert([ 
      'user_id' => rand(1, 50), 
      'channel_id' => rand(1,14), 
      'title' => $faker->sentence, 
      'slug' => str_slug($title), 
      'text' => $faker->paragraph, 
      'created_at' => Carbon::now(), 
      'updated_at' => Carbon::now(), 
     ]); 

    } 

} 
+0

[Code-only-Antworten werden auf SO als minderwertig eingestuft] (https://meta.stackoverflow.com/questions/300837/what-comment-should-i-add-to-code-only-answers). Hinzufügen einer Erklärung über was Sie getan haben, und warum, wird die Qualität Ihrer Antwort erheblich erhöhen. Was macht Ihr Code, dass OPs nicht? Warum denkst du, dass es das Problem lösen wird? –

+0

Es hat funktioniert! Vielen Dank!! –

+0

@ Feudelcosine148: Freut mich zu helfen !!! –

0

Ihre $title nur 1x eingestellt ist, außerhalb der Schleife. Sie versuchen also, 30 Datensätze mit demselben Slug zu erstellen, was natürlich fehlschlägt, wenn sie eindeutig sein müssen. Verschieben Sie die title und slug Schöpfung in der Schleife, um sicherzustellen, sie sind neu und einzigartig mit jeder Iteration:

public function run() 
{ 
    $faker = Faker\Factory::create(); 

    foreach(range(1, 30) as $index) { 

     $title = $faker->sentence; 
     $slug = str_slug($title); 

     DB::table('posts')->insert([ 
      'user_id' => rand(1, 50), 
      'channel_id' => rand(1,14), 
      'title' => $title, 
      'slug' => $slug, 
      'text' => $faker->paragraph, 
      'created_at' => Carbon::now(), 
      'updated_at' => Carbon::now(), 
     ]); 

    } 
} 
0

Sie haben zwei Fehler in der Migration:

public function up() 
{ 
    Schema::create('posts', function (Blueprint $table) { 
     $table->increments('id'); 
     $table->unsignedInteger('user_id'); // here 
     $table->unsignedInteger('channel_id'); // and here 
     $table->string('title'); 
     $table->longText('text'); 
     $table->string('slug')->unique(); 
     $table->timestamps(); 
    }); 
} 

Dann empfehle ich Ihnen, die Model Factories für Ihre Bedürfnisse zu verwenden.

Verwandte Themen