如何在自引用表上使用 Laravel 的 hasManyThrough
How to use Laravel's hasManyThrough on self-referenced tables
我有用户和区域模型,我想从主管的用户类型中获取一些区域。所以这就是我定义关系的方式。
public function regional()
{
return $this->belongsTo(Regional::class);
}
/**
* Get all user that belongs to this supervisor
*
* @return mixed
*/
public function amOfSupervisor()
{
return $this->hasMany(User::class, 'supervisor_id');
}
我可以通过$user->regional
获取用户的区域,但是如何获取所有基于该用户的区域呢?我试过 hasManyThrough()
但总是出错。怎么了,或者我该怎么办?
public function RegionalSV()
{
return $this->hasManyThrough(Regional::class,
User::class,'supervisor_id', 'regional_id');
}
hasManyThrough 在项目有环境且环境有部门时使用
我们可以使用
hasManyThrough( departement::class,Environment::class,'project_id','Environment_id','id','id')
所以你有 User 有很多用户,每个用户都属于区域
你可以做到
Regional::whereExists(function($query){
$query->selectRaw('1')->from('users')->whereColumn('users.regional_id','regionals.id')
->where('users.supervisor_id',$this->id);
})->get()
或
Regional::join(self::class,'users.regional_id','=','regionals.id')
->where('users.supervisor_id',$this->id)->get();
我有用户和区域模型,我想从主管的用户类型中获取一些区域。所以这就是我定义关系的方式。
public function regional()
{
return $this->belongsTo(Regional::class);
}
/**
* Get all user that belongs to this supervisor
*
* @return mixed
*/
public function amOfSupervisor()
{
return $this->hasMany(User::class, 'supervisor_id');
}
我可以通过$user->regional
获取用户的区域,但是如何获取所有基于该用户的区域呢?我试过 hasManyThrough()
但总是出错。怎么了,或者我该怎么办?
public function RegionalSV()
{
return $this->hasManyThrough(Regional::class,
User::class,'supervisor_id', 'regional_id');
}
hasManyThrough 在项目有环境且环境有部门时使用 我们可以使用
hasManyThrough( departement::class,Environment::class,'project_id','Environment_id','id','id')
所以你有 User 有很多用户,每个用户都属于区域
你可以做到
Regional::whereExists(function($query){
$query->selectRaw('1')->from('users')->whereColumn('users.regional_id','regionals.id')
->where('users.supervisor_id',$this->id);
})->get()
或
Regional::join(self::class,'users.regional_id','=','regionals.id')
->where('users.supervisor_id',$this->id)->get();