Laravel 5 更新所有 Pivot 条目

Laravel 5 update all Pivot entries

我在用户和自定义视图模型之间存在多对多关系:

use Illuminate\Foundation\Auth\User as Authenticatable;

class User extends Authenticatable
{
    /**
     * Customview relation
     * @return \Illuminate\Database\Eloquent\Relations\BelongsToMany
     */
    public function customviews ()
    {
        return $this->belongsToMany( Customview::class )->withPivot( 'default' );
    }
}

现在,我想更新所有用户的自定义视图分配并将它们的默认标志重置为 0。

在 SQL 中(枢轴 table 的名称是 customview_user),这应该看起来像这样:

UPDATE `customview_user` SET `default`=0 WHERE `user_id`=<user_id>;


有没有办法这样做:

$user->customviews()->...update(['default' => 0]);

像这样 updateExistingPivot 试试:

$user->customviews()->updateExistingPivot($customviewId, ['default' => 0]);

你可能已经离开了这里,但为了后代,我还是会回复,因为我是通过 Google 找到这个问题的。

它很老套,但它确实有效:

$user->customviews()
    ->newPivotStatement()
    ->where('user_id', '=', $user->id)
    ->update(array('default' => 0));