2017-04-21 1 views
1

Ich habe Beitrag Tabelle und Bilder Tabelle, die eins zu viele Beziehung haben.Laravel einfügen in einer zu vielen Beziehung

Beitrag Model Code

public function images() 
    { 
     return $this->hasMany('App\PostImage'); 
    } 

Ich nehme von den Benutzer 3 Bilder und ich möchte, dass sie in der Bilder-Tabelle mit der Post-ID einzufügen.

Zum Beispiel

firstImage.jpg mit post-ID

secondImage.jpg mit post-ID

thirdImage.jpg mit po st id

Frage ist

Wie ich die drei Bilder zur gleichen Zeit mit der ID 1 in drei Spalten

einfügen Was ich versucht habe

Ich habe eine for-Schleife gemacht, die 3 mal einfügen die Tabelle, aber ich weiß, es ist keine gute Praxis und hier ist der Code.

for($x = 0; $x < 3; $x++) { 
$image = new PostImage; 
$image -> post_id = $ad -> id; 
$image -> image  = $images_name[$x]; 
$image -> save(); 
} 
+0

Duplizieren von: http: // stackoverflow.com/questions/29723865/how-to-insert-multiple-rows-from-a-single-query-using-eloquent-fluent –

+0

Mögliche Duplikate von [Wie mehrere Zeilen aus einer einzigen Abfrage mit eloquent/fließend einfügen] (http://stackoverflow.com/questions/29723865/how-to-insert-multiple-rows-from-a-single-query-using-eloquent-fluent) –

Antwort

1

Es ist nichts falsch an diesem Ansatz, wenn Sie nur 3 Bilder einfügen müssen. Allerdings, wenn Sie wollen Hunderte von Bildern einfügen, würde ich Sie empfehlen, die insert() Methode zu verwenden, die nur eine Abfrage erstellen, werden statt der Schaffung 100 Abfragen zum Einfügen von 100 Bildern:

$array = []; 
foreach ($images_name as $name) { 
    $array[] = ['post_id' => $ad->id, 'image' => $name]; 
} 
PostImage::insert($array); 
+0

werden sie nicht mehr als 3 Bilder sein, also was ist das beste Lösung in diesem Fall? – Frank

+0

@Frank für 3 Bilder Ich würde bei Ihrer Lösung bleiben, aber ich würde den Code in etwas ändern wie 'foreach ($ image_name als $ name) {PostImage :: create (['post_id' => $ ad- id , 'image' => $ name]); } ' –

+1

vielen Dank das ist genau das, was ich will – Frank

Verwandte Themen