2016-10-18 3 views
1

У меня есть многие-ко-многим-отношения между Пользователем и Customview Модель:Laravel 5 обновления всех Pivot записей

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'); 
    } 
} 

Теперь я хочу, чтобы обновить все данные пользователя customview-задание и сброс их флаг по умолчанию 0.

рукой это должно выглядеть в SQL (имя сводной таблицы является customview_user):

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


Есть ли способ сделать это так:

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

ответ

2

Вы, возможно, перешли от этого, но для потомков я отвечу так или иначе, как я нашел этот вопрос через Google.

Это Hacky, но это делает трюк:

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

Это именно то, как я это сделал: '$ this-> customviews() -> newPivotStatement() -> где ('user_id', $ this -> id) -> update (['default' => 0]); ' –

-1

Попробуйте с updateExistingPivot так:

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

Это работает только с одной строкой. Я хочу обновить все отношения, связанные с пользователем. –

Смежные вопросы