2015-07-24 8 views
0

У меня есть отношение «один ко многим» с таблицей affiliates.Laravel 5 - Обновляю во многих отношениях

Модель пользователя:

public function affiliates() { 
     return $this->hasMany('App\Affiliate'); 
    } 

Партнерская Модель:

public function user() { 
     return $this->belongsTo('App\User'); 
    } 

The affiliates и другие users, который выбран из отборного поля в форме.

Схема Affiliates ниже

Schema::create('affiliates', function(Blueprint $table) 
     { 
      $table->increments('id'); 
      $table->integer('user_id'); 
      $table->integer('affiliate_id'); 
     }); 

Я хочу обновить несколько филиалов, выбранных из формы. Пожалуйста, дайте мне пример для обновления существующих записей или создания нового.

ответ

0

Вы можете сделать это следующим образом:

$user = User::find(1); 
$input = [2, 3]; 
$affiliates = User::whereIn('id', $input)->get(); 

// Delete old affiliates 
Affiliate::whereUserId($user->id)->delete(); 

// Add new affiliates 
foreach($affiliates as $affiliate) 
    $user->affiliates()->save(new Affiliate(['user_id' => $user->id, 'affiliate_id' => $affiliate->id])); 

Где

  • $user является пользователь, который получит новые филиалы.
  • $input Ввод формы, содержащий идентификаторы пользователей, которые станут филиалами $user.

user_id Убедитесь, что и affiliate_id столбцы заливкой (не охраняемая) в вашей Affiliate модели или вы получите MassAssignmentException исключение.

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