Laravel 5 Laravel 5.2,三倍多
我想做以下几件事 我有三种模式:Laravel 5 Laravel 5.2,三倍多,laravel-5,many-to-many,pivot-table,Laravel 5,Many To Many,Pivot Table,我想做以下几件事 我有三种模式:用户,业务,角色 它们之间的联系如下:用户可以有多个角色,并且属于多个业务 角色是预定义的 我希望每个用户可以在不同的业务中扮演不同的角色。 例如,在business1中,用户具有角色销售经理,但在business2中,用户具有角色主管。用户可以在同一业务上有多个角色 用户型号: public function businesses() { return $this->belongsToMany('App\Business')->withTim
用户
,业务
,角色
它们之间的联系如下:用户可以有多个角色,并且属于多个业务
角色是预定义的
我希望每个用户可以在不同的业务中扮演不同的角色。
例如,在business1中,用户具有角色销售经理
,但在business2中,用户具有角色主管
。用户可以在同一业务上有多个角色
用户
型号:
public function businesses()
{
return $this->belongsToMany('App\Business')->withTimestamps();
}
public function users()
{
return $this->belongsToMany('App\Business')->withTimestamps();
}
业务
型号:
public function businesses()
{
return $this->belongsToMany('App\Business')->withTimestamps();
}
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->businesses()->attach($business_id, ['role_id' => $roleId]);
这将在pivot表中添加以下行:['1','2','3']
我的问题是:
- 这样做对吗
- 如何继续使用分离方法?
$user->business()->分离($business\u id)->其中($role\u id',$role\u id)代码> 这不是正确的语法,而是类似这样的语法。如果用户在detach上的业务中有两个角色(例如:“director”和“sales manager”),我只想删除其中一个角色(例如:“director”),而不是全部。我相信运行
$user->business()->detach($business\u id)代码>将分离所有角色
- 有没有办法将
方法与此一起使用sync()
public function roles()
{
return $this->belongsToMany('App\Role')->withTimestamps();
}
public function businesses()
{
return $this->belongsToMany('App\Business')->withTimestamps();
}
public function businessesAdmin()
{
return $this->belongsToMany('App\Business')->withTimestamps()->wherePivot('role_id', $role_id = 'whatever_is_your_businessAdmin_role_id');
}
用户控制器:
function addAdminRole(Request $r) {
//get the user_id and business_id from the $r
//define $businessAdminRole_id
$user->businesses()->sync([$business_id => ['role_id' => $businessAdminRole_id]]);
}
function removeAdminRole(Request $r) {
$user = User::findOrFail($request->user_id)
business = $request->business;
$user->businessesAdmin()->detach($business_id);
}
我希望我没有错过任何东西。
我浪费了太多的时间去想这个。。。
希望它能帮助别人
如果您需要更多代码,请在代码还未更新时询问。使用范围筛选该用户和该业务的正确角色。你们的关系很好,我想嘿@MikeMiller,最后我发现了,这为我指明了正确的方向,谢谢。