数据表
// 用户
user
id - integer
name - string
// 角色
role
id - integer
name - string
// 用户与角色对应关系
role_user
user_id - integer
role_id - integer
用户模型
class User extends \think\Model
{
public function role()
{
// 参数依次为:关联模型,中间表表名,关联模型的关联中间表的字段,当前表的关联中间表字段
// 查询关联表时将使用当前表的主键作为查询依据
return $this->belongsToMany(Role::class, 'role_user', 'role_id', 'user_id');
}
/**
* @description: 根据用户id获取用户角色
* 方法执行的查询用户角色的语句为
* SELECT
* `role`.*,
* `pivot`.`id` AS `pivot__id`,
* `pivot`.`user_id` AS `pivot__user_id`,
* `pivot`.`role_id` AS `pivot__role_id`
* FROM
* `role` INNER JOIN `role_user` `pivot` ON `pivot`.`role_id` = `role`.`id`
* WHERE
* `pivot`.`user_id` = '7'
* @param {*} $user_id
* @return {*}
*/
public function getRoleByUserId($user_id)
{
$this->with(['role'])->find($user_id);
}
}