我试图在belongsTo
关系中向attach()方法添加属性,但它没有任何影响:
// User Model
class User extends Eloquent {
public function roles(){
return $this->belongsToMany(`App\Role`);
}
}
// Role Model
class Role extends Eloquent {
public function users(){
return $this->belongsToMany(`App\User`);
}
public function attach($id, array $attributes = [], $touch = true){
$attributes['foo'] = 'bar';
parent::attach($id, $attributes, $touch);
}
}
当我执行$user->roles()->attach($id, ['key' => 'value']);
时,['key' => 'value']
就在那里,但它没有我在扩展附加方法中设置的['foo' => 'bar']
(我相信没有被召唤。
答案 0 :(得分:0)
首先,如果您正在处理多对多关系,则必须使用附加方法 。
此处有更多信息:http://laravel.com/docs/5.1/eloquent-relationships#inserting-many-to-many-relationships
所以,你有两种不同的选择:
您想要处理一对多关系。在这种情况下,您必须扩展 save()方法或 saveMany 方法。而且您必须处理HasMany类;
您想要处理多对多关系。在这种情况下,是的,您必须处理 attach(),但是在BelongsToMany类中;