【问题标题】:how to store data addtional column in pivot tavle laravel如何在数据透视表laravel中存储数据附加列
【发布时间】:2020-07-29 09:58:23
【问题描述】:

我有这样的数据透视表

这是我的用户模型

 public function getHousing()
{
    return $this->belongsToMany(Housing::class, 'user_housing', 'user_id', 'housing_id')->withPivot('primary');
}

这是我的住房模型

   public function getUser()
{
    return $this->belongsToMany(Users::class, 'user_housing', 'housing_id', 'user_id')->withPivot('primary');
}

我想用 1 保存主节点,这是我的控制器

     $getData = $this->crud->show($id);
    if (!$getData) {
        return redirect()->route('admin.' . $this->route . '.index');
    }

    $data = $this->validate($this->request, [
        'housing_group_id' => 'required',
        'housing_id' => 'required',
        'primary'   => 'required',
    ]);

    $getData->housing_id = $getData->getHousing()->pluck('id')->toArray();


    $getData->getHousing()->sync($this->request->get('housing_id'), ['primary' => 1]);


    $id = $getData->id;

我已经添加了数组填充主 1,但是我有这样的错误

SQLSTATE[HY000]: General error: 1364 Field 'primary' doesn't have a default value 

如何在数据透视表 laravel 中保存附加字段? 谢谢

【问题讨论】:

    标签: laravel eloquent many-to-many


    【解决方案1】:

    与数据透视表中的其他列同步,您应该为每个 id 传递一个关联数组,其中列名作为键,字段值作为值

    $elements_array[$this->request->get('housing_id')]=['primary' => 1]
    $getData->getHousing()->sync(elements_array);
    

    如果您有多个“id”要同步...您必须为每个 id 重复第一步。

    检查这个: https://stackoverflow.com/a/27230803/10573560

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2020-09-01
      • 1970-01-01
      • 2015-08-13
      • 2021-08-29
      • 2019-04-07
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多