Laravel updateExistingPivot 不断返回 false

Posted

技术标签:

【中文标题】Laravel updateExistingPivot 不断返回 false【英文标题】:Laravel updateExistingPivot Keeps Returning false 【发布时间】:2021-02-13 19:31:31 【问题描述】:

我有以下多对多关系和数据透视表。所以我想将 user_id 更新为 trophy_id = 3 的 1 个数据透视表。但是它一直返回 0 或 false。

奖杯.php

public function users()

    return $this->belongsToMany('App\User', 'trophies_users', 'trophy_id', 'user_id');

用户.php

public function trophies()

    return $this->belongsToMany('App\Trophy', 'trophies_users', 'user_id', 'trophy_id');

数据透视表

public function up()

    Schema::create('trophies_users', function (Blueprint $table) 
        $table->id();
        $table->integer('trophy_id');
        $table->integer('user_id');
        $table->timestamps();
    );

在我的控制器中,我正在尝试更新数据透视表

用户控制器@索引

    public function index(Request $request)
    

        $user = User::find(1);
        $trophyId = 3;
        $attributes = ['user_id' => 1];
        $res = $user->trophies()->updateExistingPivot($trophyId , $attributes);
        dd($res); //Keeps returning 0 or false
    

【问题讨论】:

【参考方案1】:

您将属性传递给updateExistingPivot,用于更新数据透视表上的额外属性。

例如,假设我们要为用户和奖杯的每个同伴存储一种颜色,我们可以通过在数据透视表中添加一个额外的列并在其上保存颜色数据来实现,如下所示:

|---------------------|
|       column        |
|---------------------|
|        id           |
|---------------------|
|       user_id       |
|---------------------|
|      trophy_id      |
|---------------------|
|        color        |
|---------------------|

如果要更新数据透视表上的关系,请使用sync 方法。

$user=User::find(1);
$trophies_id=[1, 2, 3];
$user->trophies()->sync($trophies_id);

【讨论】:

以上是关于Laravel updateExistingPivot 不断返回 false的主要内容,如果未能解决你的问题,请参考以下文章

Laravel:laravel 可翻译插件

win 怎么laravel命令

laravel 安装失败

laravel validator怎么验证整数

Laravel 图像规则验证不适用于 Laravel 8,但适用于 Laravel 7 |拉拉维尔 |图片 |验证

laravel和mongo怎么搭配使用