Laravel 5-在具有条件的hasMany关系上调用create()

时间:2019-05-21 14:17:35

标签: php laravel-5 eloquent

我有几个模型-我们称它们为Item和Ean。在Item模型中,与Ean模型有几个hasMany关系。

  public function eans() {
    return $this->hasMany(Ean::class)->orderBy('type', 'asc')->orderBy('id', 'asc');
  }

  public function eans_type_1() {
    return $this->hasMany(Ean::class)->where('type', 1)->orderBy('id', 'asc');
  }

  public function eans_type_2() {
    return $this->hasMany(Ean::class)->where('type', 2)->orderBy('id', 'asc');
  }

当我要将新的Ean模型关联到Item时,我正在使用create():

$item->eans()->create(['ean' => $value, 'type' => 1]);
or
$item->eans()->create(['ean' => $value, 'type' => 2]);

有没有一种方法可以定义hasMany关系:

$item->eans_type_1()->create(['ean' => $value]);

1 个答案:

答案 0 :(得分:0)

并非没有严重的压倒性。通话时

$items->eans()
$items->eans_type_1()
$items->eans_type_2()

您将获得一个Illuminate\Database\Eloquent\Relations\HasMany实例以及您致电时

$items->eans
$items->eans_type_1
$items->eans_type_2

您将获得一个Illuminate\Database\Eloquent\Collection实例。 只需传递值即可。