【问题标题】:Laravel 5 - Updating one to many relationsLaravel 5 - 更新一对多关系
【发布时间】:2015-07-24 20:21:01
【问题描述】:

我与affiliates 表有一对多关系。

用户模型:

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

加盟模特:

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

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

Affiliates 的架构如下

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

我想更新从表单中选择的多个关联公司。请给我一个更新现有记录或创建新记录的示例。

【问题讨论】:

    标签: php laravel eloquent laravel-5


    【解决方案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_id 列在您的Affiliate 模型中是可填充的(不受保护),否则您将获得MassAssignmentException 异常。

    【讨论】:

      猜你喜欢
      • 2018-01-28
      • 1970-01-01
      • 1970-01-01
      • 2018-09-26
      • 2016-04-02
      • 1970-01-01
      • 1970-01-01
      • 2015-07-01
      • 1970-01-01
      相关资源
      最近更新 更多