0
我想做以下操作。Laravel 5.2,三路太多太多
我有三個型號:User
,Business
,Role
它們連接如下:用戶可以有多種角色,並且屬於多個企業。
角色已預定義。
我希望每個用戶可以在不同的業務中有不同的角色。 例如,在business1中,用戶具有角色sales manager
,但在business2中他具有角色director
。用戶可以在同一業務上擁有多個角色。
User
型號:
public function businesses()
{
return $this->belongsToMany('App\Business')->withTimestamps();
}
Business
型號:
public function users()
{
return $this->belongsToMany('App\Business')->withTimestamps();
}
透視表:
Schema::create('business_user', function (Blueprint $table) {
$table->increments('id');
$table->timestamps();
$table->integer('business_id')->unsigned();
$table->integer('user_id')->unsigned();
$table->integer('role_id')->unsigned();
});
我添加User
到Business
爲:
$user->businesses()->attach($business_id, ['role_id' => $roleId]);
這應該將數據透視表中的行添加爲:['1','2','3']。
我的問題是:
- 這是這樣做的正確方法?
- 我該如何處理detach方法?
$user->businesses()->detach($business_id)->where('role_id',$role_id);
這不是正確的語法,但是像這樣。如果用戶在業務中有兩個角色(例如:'director'和'sales manager'),我想刪除其中一個角色(例如:'director'),而不是全部角色。我相信運行$user->businesses()->detach($business_id);
將分離所有角色。 - 有沒有辦法使用這個
sync()
方法?
使用範圍來篩選該用戶和該業務的正確角色。我認爲你們的關係很好 –
嘿@MikeMiller,最後我明白了這一點,這表明我正確的方向,謝謝。 – dbr