laravel如何插入一个简单的多对多关系

时间:2014-07-22 17:56:39

标签: php laravel laravel-4

我有一个DetailsAttribute型号。

我有一个Actions型号。

他们之间的关系很多很多。

这就是为什么我创建了一个新的details_attribute_action表。

模型的代码是:

class DetailsAttribute extends  Eloquent{
 public function actions(){
        return $this->belongsToMany('Action', 'details_attribute_action', 'action_id', 'details_attribute_id');
    }
}

class Action extends Eloquent{
   public function detailsAttribute(){
        return $this->belongsToMany('DetailsAttribute', 'details_attribute_action', 'details_attribute_id', 'action_id');
    }
}

然后当用户想要添加新的detailsAttribute时,他会提交一个包含许多操作的表单。

我这样做:

$detailsAttribute = DetailsAttribute::create($data);

我也有这个动作:

$actions = Input::get('action_id')

请注意$ actions是一个数组,因为action_id是html中4个select的名称

我的问题是如何将此$actions添加到details_attribute_action

1 个答案:

答案 0 :(得分:1)

这将链接数据透视表中的模型:

$detailsAttribute->actions()->sync($actions);

这就是你需要的,对吗?


旁注:你的关系中你的fk顺序错了,应该是这样的:

class DetailsAttribute extends  Eloquent{
 public function actions(){
        return $this->belongsToMany('Action', 'details_attribute_action', 'details_attribute_id', 'action_id');
    }
}

class Action extends Eloquent{
   public function detailsAttribute(){
        return $this->belongsToMany('DetailsAttribute', 'details_attribute_action', 'action_id', 'details_attribute_id');
    }
}

对于belongsToMany,它总是这样:

belongsToMany('Model', 'table', 'this_model_fk', 'other_model_fk')