首先建立三个表:
一、用户表(members)
id字段 | username字段 |
1 | zhangsan |
2 | lisi |
3 | smallRedHat |
4 | wangwu |
5 | laowang |
二、角色表(roles)
id字段 | name角色名称字段 |
1 | 超级VIP会员 |
2 | VIP会员 |
3 | 普通用户 |
三、关联表(roleMembers)
id字段 | member_id字段 | role_id字段 |
1 | 1 | 1 |
2 | 2 | 2 |
3 | 3 | 3 |
4 | 4 | 3 |
5 | 5 | 2 |
建立好表之后,创建模型,模型目录:app/Models
Member.php
<?php
namespace App\Models;
use Illuminate\Database\Eloquent\Factories\HasFactory;
use Illuminate\Database\Eloquent\Model;
class Member extends Model
{
use HasFactory;
public function roleMember(){
//进行关联
//Role::class roles角色表的模型
//RoleMember::class roleMembers关联表的模型
//member_id 用户ID
//role_id 角色ID
return $this->belongsToMany(Role::class,RoleMember::class,'member_id','role_id');
}
}
Role.php
<?php
namespace App\Models;
use Illuminate\Database\Eloquent\Factories\HasFactory;
use Illuminate\Database\Eloquent\Model;
class Role extends Model
{
use HasFactory;
public function roleMember(){
//进行关联
//Member::class members角色表的模型
//RoleMember::class roleMembers关联表的模型
//role_id 角色ID
//member_id 用户ID
return $this->belongsToMany(Member::class,RoleMember::class,'role_id','member_id');
}
}
RoleMember.php
<?php
namespace App\Models;
use Illuminate\Database\Eloquent\Factories\HasFactory;
use Illuminate\Database\Eloquent\Model;
class RoleMember extends Model
{
use HasFactory;
}
模型创建好之后,在Controller里面进行调用;Controller目录:app/Http/Controllers
IndexController.php
<?php
namespace App\Http\Controllers;
use App\Models\Member;
use App\Models\Role;
use Illuminate\Http\Request;
class IndexController extends Controller
{
public function store(){
//查询用户ID为1的角色
$member = Member::find(1);
//输出的是Object
dd($member->roleMember);
//查询用户ID为1的角色
$member = Member::find(1);
//输出的是Array数组
dd($member->roleMember->toArray());
//查询角色为1的用户
$role = Role::find(1);
//输出的是Object
dd($role ->roleMember);
//查询角色为1的用户
$role = Role::find(1);
//输出的是Array数组
dd($role ->roleMember->toArray());
}
}
定义路由进行访问即可看到输出的数据。