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