代码之家  ›  专栏  ›  技术社区  ›  Jesse Orange

拉勒维尔:同桌关系

  •  0
  • Jesse Orange  · 技术社区  · 7 年前

    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');
    }
    
    1 回复  |  直到 7 年前
        1
  •  0
  •   Nabin Paudyal    7 年前

    解决这个问题的最佳方法是使用用户的id作为manager的外键。

    managedByUsername 字段 manager_id .

    然后,你可以把你的雄辩关系写成:

    public function mananager()
    {
      return $this->belongsTo(User::class, 'manager_id');
    }
    
    public function employees()
    {
      return $this->hasMany(User::class, 'manager_id');
    }
    

    推荐文章