首页 > 解决方案 > Laravel 如何与同一张表建立 2 个关系?

问题描述

在 Laravel 中遇到一些问题,不确定是否有任何解决方案,但希望你们能帮助我。所以让我们假设我有 2 张表USERSTRAINEES。用户可以被视为公司,管理员,讲师取决于字段角色。关于关系 用户作为公司可以有很多实习生,但作为讲师也可以有很多实习生。那么在这种情况下,我该如何建立它们之间的关系呢?表 TRAINEES 应该有字段COMPANY_IDINSTRUCTOR_ID吗?或如何?但它是同一张表USERS。我不知道你是否清楚。尽管问我。指望你们

标签: phplaravel

解决方案


设计用户和学员表如下:

用户表列/字段:

  • id(主键)
  • 用户名(字符串)
  • 角色(字符串,索引)

学员表列/字段:

  • id(主键)
  • 名称(字符串)
  • trainer_id(整数,索引)
  • company_id(整数,索引)

然后在您的受训者模型中,执行以下操作:

public function trainer()
    {
        return $this->belongsTo('App\User', 'trainer_id');
    }

public function company()
    {
        return $this->belongsTo('App\User', 'company_id');
    }

在您的用户模型中,执行以下操作:

public function trainees()
    {
        if($this->attributes["role"] == "company")
            return $this->companyTrainees();
        if($this->attributes["role"] == "instructor")
            return $this->instructorTrainees();
        return array();
    }

public function companyTrainees()
    {
        return $this->hasMany('App\Trainee', 'trainer_id');
    }

public function instructorTrainees()
    {
        return $this->hasMany('App\Trainee', 'company_id');
    }

在您的控制器和其他地方使用这些关系。这没有经过测试,但它不应该有太多错误。不要忘记使用有效数据为数据库播种,尤其是对于 id。


推荐阅读