Laravel Model 1-n Instanciation

时间:2017-05-11 23:46:11

标签: laravel laravel-5 eloquent

我想知道如何做对。我们假设我们有2个模型:

  • Object1
  • Object2的

这两者之间的关系是1-n:

  • Object1 hasMany Object2
  • Object2 belongsTo Object1

请注意,在数据库中我们遵循了默认属性名称(object1_id,...)

当我想要实例化时:

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

如何在将Object1保存到数据库之前将这两个Object2关联到Object1?有没有办法在不将Object1保存到DB之前保存,然后使用Object1的ID来附加这两个Object2?

类似的东西:

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

知道我们想要在save()上,它会将相应的Object2添加到DB中。

1 个答案:

答案 0 :(得分:1)

首先,正确的关系是:

  • Object1 hasMany Object2
  • Object2 BelongsTo Object1

然后,你可以这样做:

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

然后附加到 $ object1 ,如下所示:

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