Laravel 5 - вызов метода create () для отношения hasMany с условиями - PullRequest
0 голосов
/ 21 мая 2019

У меня есть пара моделей - назовем их Item и Ean.В модели Item есть пара отношений hasMany с моделью Ean.

  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 голосов
/ 22 мая 2019

Не без серьезного переопределения. Когда вы звоните

$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 экземпляр. Просто передайте значение.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...