【问题标题】:Update pivot table with updateExistingPivot - Laravel 8使用 updateExistingPivot 更新数据透视表 - Laravel 8
【发布时间】:2021-01-28 20:14:49
【问题描述】:

我有 2 个模型(调查和类别)通过数据透视表处于多对多关系。

我希望能够使用 updateExistingPivot 更新这些记录,但我收到此错误:

SQLSTATE[42S22]: Column not found: 1054 Unknown column '0' in 'field list' (SQL: update `category_survey` set `0` = 2, `1` = 3 where `survey_id` = 2 and `category_id` in (2))

模型调查:

 public function categories()
    {
        return $this->belongsToMany(Category::class)
            ->as('categories');
    }

我正在尝试这样调用方法:

$survey->categories()->updateExistingPivot($survey->id, $request['categorias']);

$request['categorias'] 包含一个类别 ID 数组。

你能帮帮我吗?谢谢

【问题讨论】:

    标签: laravel


    【解决方案1】:

    我认为sync() 方法更适合您的情况,该方法构造多对多关联并接受ID数组放置在中间表上:

    $survey->categories()->sync($request['categorias']);
    

    【讨论】:

    • 谢谢@OMR 你的提议对我帮助很大
    【解决方案2】:
    1. 我认为您需要传递 $category->id 而不是 $survey->id
    2. 检查您的 $request['categorias'] 它需要是键/值数组,例如['name' => 'foo']

    这里是documentation

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2016-03-09
      • 1970-01-01
      • 1970-01-01
      • 2021-10-03
      • 1970-01-01
      • 1970-01-01
      • 2018-02-26
      • 2017-07-01
      相关资源
      最近更新 更多