[英]Laravel: relations on same table
在我的应用程序中,我有一个users
表,该表中有一个称为managedByUsername
的字段,该字段是该特定用户的管理员的用户名。
为了明确地让您的员工,您可以执行以下查询:
$employees = User::where('managedByUsername', auth()->user->username)->get()
要获得您的经理,可以在用户模型上建立关系;
public function mananager()
{
return $this->belongsTo(User::class, 'username', 'managedByUsername');
}
但是,我想不出您会怎么做呢?
也许
public function employees()
{
return $this->hasMany(User::class, 'username', 'managedByUsername');
}
但这显然行不通。
我也尝试了以下方法:
/**
* Get the manager for this user
*
* @return void
*/
public function mananager()
{
return $this->belongsTo(User::class, 'managedByUsername', 'username');
}
/**
* Get the manager for this user
*
* @return void
*/
public function employees()
{
return $this->hasMany(User::class, 'managedByUsername', 'username');
}
解决此问题的最佳方法是将用户的ID用作管理员的外键。
因此,将managedByUsername
字段替换为manager_id
。
然后,您可以将雄辩的关系写成:
public function mananager()
{
return $this->belongsTo(User::class, 'manager_id');
}
public function employees()
{
return $this->hasMany(User::class, 'manager_id');
}
希望这有助于解决您的问题。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.