laravel - 使用 updateExistingPivot 更新数据透视表 - Laravel 8

标签 laravel

我有 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 数组。

你能帮我吗?谢谢

最佳答案

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

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

关于laravel - 使用 updateExistingPivot 更新数据透视表 - Laravel 8,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/65936213/

相关文章:

sql - 如何使用 Laravel 查询生成器从子查询中进行选择?

php - Laravel 集合总是返回一个对象而不是数组

git - 对 gitignore 文件进行异常(exception)处理

javascript - 当按下 HTML 按钮时如何显示从 PHP 函数返回的数据

php - 具有多个提交的 Laravel DB 事务?

javascript - 如何使用简单的 'a' 标签在现有网站中包含使用 npm 和 webpack 构建的 vuejs 应用程序?

symfony - 在 Laravel 4 中使用 CssSelector

php - laravel Controller 查询响应时间比 phpmyadmin 查询运行时慢

php - Laravel 8 - 当 Controller 不存在时显示自定义的 404 Blade 页面

javascript - 客户端公斤到磅无法正常工作