【问题标题】:Saving one-to-many by IDs in Laravel Eloquent在 Laravel Eloquent 中通过 ID 保存一对多
【发布时间】:2021-12-31 11:02:34
【问题描述】:

我似乎忽略了基本的 Laravel Eloquent 功能。

使用以下(Mongo,使用Jenssegers package DB 结构和类:

Owner (id,car_ids)
Car (id)

Class Owner extends Model
{
  public function cars(): HasMany
  {
    return $this->hasMany(Car::class);
  }
}

Class Car extends Model
{
  public function owner(): BelongsTo
  {
    return $this->belongsTo(Owner::class);
  }
}

一个车主可以拥有多辆汽车,一辆汽车属于一个车主。

现在,我得到一个现有汽车 ID 列表作为输入,并希望将它们附加到现有车主。 我必须先循环并通过 id 找到汽车型号,然后使用 saveMany 吗?没有直接存储id的选项吗?

【问题讨论】:

    标签: laravel eloquent


    【解决方案1】:

    您应该在刀片上放置一个select 标签,如下所示:

    <select name="cars[]" id="cars" multiple>
      <option value="1">Volvo</option>
      <option value="2">Saab</option>
      <option value="3">Opel</option>
      <option value="4">Audi</option>
    </select>
    

    然后,提交表单后,您可以获取汽车的 id 并使用saveMany,如下所示:

    $owner = Owner::find(1);
    $ids = $request->input('cars');
    $owner->cars()->saveMany($ids);
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2021-02-02
      • 2017-07-17
      • 2018-01-22
      • 2014-10-25
      • 2018-12-25
      • 2016-12-20
      • 2018-12-29
      • 1970-01-01
      相关资源
      最近更新 更多