我想一個屬性在belongsTo
關係添加到attach()方法,但它沒有影響:擴展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']
,我已經在擴展附加方法中設置了它(我相信它沒有被調用)。
'attach()'是'BelongsToMany'關係上的方法,而不是'BelongsTo'或模型。你發佈的代碼應該拋出異常。另外,你已經標記了laravel-5,但是擴展'Eloquent'類看起來像laravel 4代碼。 – patricus
attach是laravel中的一個內置方法,與許多關係一起使用,我不明白爲什麼你要創建這個函數 –
我更新了代碼以使用'belongsToMany' - 我實際上使用多態關係(但是他們的類從'belongsToMany'擴展) - 我仍然在尋找擴展'attach()'方法的方法。 –