2017-05-11 8 views
0

Ich habe mich gefragt, wie man es richtig macht. Lassen Sie uns sagen, wir haben zwei Modelle:Laravel Model 1-n Instanciation

  • Object1
  • Object2

Die Beziehung zwischen diesen beiden ist 1-n:

  • Object1 hasMany Object2
  • Object2 belongsTo Object1

Beachten Sie, dass in der DB wir die Standard gefolgt sind Attribute Namen (object1_id, ...)

Als ich instanziiert wollen:

$object1 = new Object1; 
$object2_1 = new Object2; 
$object2_2 = new Object2; 

Wie diese beiden Object2 zu Object1 assoziieren, bevor Object1 auf die rettende DB? Gibt es eine Möglichkeit, dies zu tun, ohne vor Object1 in der DB zu speichern und dann die ID von Object1 zu verwenden, um diese 2 Object2 anzuhängen?

Etwas wie:

$object1->add?($object2_1); 
$object1->add?($object2_2); 
$object1->save(); 

Zu wissen, dass wir wollen, dass auf die() speichern Sie es an die DB die entsprechende Object2 der aswell hinzufügen.

Antwort

1

Erstens ist die richtige Beziehung ist:

  • Object1 hasMany Object2
  • Object2 Gehört Object1

dann, Sie so etwas tun kann:

$object1 = Object1::create([]); 
$object2_1 = new App\Object2([]); 
$object2_2 = new App\Object2([]); 

dann befestigen zu $ object1 wie folgt:

$object1->objects2()->saveMany([$object2_1, $object2_2]); 
Verwandte Themen