如何设置在迁移和Eloquent中对用户具有不同职位的团队?

时间:2019-09-02 14:35:39

标签: laravel eloquent

我是一名学生,试图了解以下设置的正确迁移和模型功能:

我有一些位置不同的团队,例如高层或中层(可以为空),还有一个所有者。我希望能够使用Eloquent来获取:

  1. 所有用户为(“ $ user-> ownerOf”)所有者的团队,
  2. 用户所属的所有团队(不需要职位,“ $ user->团队”)
  3. 团队中的所有用户(“ $ team->用户”)
  4. 每个职位的用户(“ $ team-> top”)

编辑:用户可以属于多个团队,但只能位于给定团队中的一个职位上

此刻,我为没有外键的用户使用一个表,为团队使用的表为不同位置的用户表使用多个外键。下面是我当前的create_teams_table迁移:

 $table->bigIncrements('id');
 $table->string('name');
 $table->bigInteger('owner')->unsigned();
 $table->foreign('owner')->references('id')->on('users')->onDelete('cascade');
 $table->bigInteger('top_id')->nullable()->unsigned();
 $table->foreign('top_id')->references('id')->on('users')->onDelete('cascade');
 $table->bigInteger('jungle_id')->nullable()->unsigned();
 $table->foreign('jungle_id')->references('id')->on('users')->onDelete('cascade');

还有更多职位,但我认为这足以理解这个概念。

我可以通过以下方式为我的团队模型中的职位获取不同的用户

public function ownerUser()
{
    return $this->belongsTo('App\Models\User', 'owner');
}

但是我找不到一种方法来吸引团队中的每个用户(例如$ team-> users)。对于整个设置是否有更好的解决方案?例如新表?

谢谢!

1 个答案:

答案 0 :(得分:0)

public function users(){
  return $this->hasMany(Users::class,'team_id','id');
}