Laravel关系: A division has many ranks,一个等级有1个分区,一个用户只有1个等级

标签 laravel eloquent relationship laravel-7 eloquent-relationship

例如:

部门:

  • A部门
  • B 组
  • C区
  • 等等...

各部门排名

  • A组 -- 排名 1、排名 2、排名 3、...
  • B 组 -- 等级a,等级b,等级c,...
  • 等等..

并且用户只会被分配一个等级。例如,他们将是“排名 1”。

这种情况到底需要什么类型的关系?表格设置应该是什么样子?

最佳答案

您的division表将是

id | name

您的排名表将为

id | division_id | name

您的用户表将是

id | name

您的user_rank表将是

id | user_id | rank_id

根据 Laravel 中的关系

部门模型

class Division extends Model
{
    protected $table = 'divisions';
    public function ranks()
    {
        return $this->hasMany('App\Rank','rank_id','id');
    }
}

排名模型

class Rank extends Model
{
    protected $table = 'ranks';
    public function divison()
    {
        return $this->belongsTo('App\Divison','rank_id','id');
    }
    public function users()
    {
        return $this->belongsToMany('App\User',''user_rank','rank_id','user_id');
    }
}

用户模型

class User extends Model
{
    protected $table = 'users';
   
    public function ranks()
    {
        return $this->belongsToMany('App\Rank',''user_rank','user_id','rank_id');
    }
}

关于Laravel关系: A division has many ranks,一个等级有1个分区,一个用户只有1个等级,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/63066407/

相关文章:

mysql - Eloquent 如何处理 Relationship?

php - 删除商店标签之前的所有标签

php - 将两个实体合并到一个表中

php - 如何更改 Laravel 模型表名称

php - 如何在 Laravel 中缓存 BLOB 类型

MySQL 存储函数出现访问冲突 :1305 in Laravel but works in phpmyadmin

php - 简化 Laravel 更新多行的 updateOrCreate 方法

mysql - 如何使用 Laravel 设计我的数据库?

php - Laravel 4 表单文本输入

php - Laravel Eloquent 多对多,增量是依赖的