繁体   English   中英

Laravel:同一张桌子上的关系

[英]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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM