Laravel 5 - 更新一对多关系

时间:2015-07-24 09:31:23

标签: php laravel eloquent laravel-5

我与affiliates表有一对多的关系。

用户模型:

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

会员模型:

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

affiliates是从表单中的选择框中选择的其他users

关联公司的架构如下

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

我想更新从表单中选择的多个关联企业。请举个例子来更新现有记录或创建新记录。

1 个答案:

答案 0 :(得分:-1)

你可以这样做:

$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附属机构的用户的ID。

确保user_id模型中的affiliate_idAffiliate列可填写(不受保护),否则您将获得MassAssignmentException例外。