Laravel 5更新所有Pivot条目

Dan*_*cht 4 php sql pivot laravel laravel-query-builder

我在用户和Customview模型之间存在多对多关系:

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' );
    }
}
Run Code Online (Sandbox Code Playgroud)

现在,我想更新所有用户的customview-assignment并将其默认标志重置为0.

在SQL中,这应该是这样的(数据透视表的名称是customview_user):

UPDATE `customview_user` SET `default`=0 WHERE `user_id`=<user_id>;
Run Code Online (Sandbox Code Playgroud)


有没有办法这样做:

$user->customviews()->...update(['default' => 0]);
Run Code Online (Sandbox Code Playgroud)

小智 6

你可能已经离开了这个,但是对于后代,无论如何,当我通过Google发现这个问题时,我会回复.

这很糟糕,但这样做有:

$user->customviews()
    ->newPivotStatement()
    ->where('user_id', '=', $user->id)
    ->update(array('default' => 0));
Run Code Online (Sandbox Code Playgroud)