多对多的查询
常见场景是权限控制, 一个用户有多个身份, 一个身份可以给多个用户.
users 模块 和其他模块
namespace app\model;
use think\Model;
class Users extends Model
{
public function role()
{
return $this->belongsToMany(Role::class,Assess::class);
}
}
在创建两个其他模块文件
Profile模块
Role模块
Assess 中间键模块
namespace app\model;
use think\model\Pivot;
class Assess extends Pivot
{
public function index()
{
}
}
使用的地方 类里
namespace app\controller;
use app\BaseController;
use app\model\Profile;
use app\model\Users;
class Login extends BaseController
{
// 创建角色表role 和 中间表Assess
public function index()
{
// 查找用户身份
// $user = Users::find(12);
// return json($user->role);
// 给某某添加已经存在的角色 12是users表的用户id 1 2 3是role表的角色id
$user = Users::find(12);
// $user->role()->save(1);
// $user->role()->saveAll([1,2,3]);
// 给某某添加新的角色
// $user->role()->save(['type'=>'测试工程师管理员']);
// 和save()一样 如果有 可以操作其他字段 操作的是中间表Assess的字段
// $user->role()->attach(1);
// $user->role()->attach(7, ['details' => '这里是测试工程师管理员']);
// 删除中间表的数据 取消 更改用户的角色 1 2 3是role表的角色id
$user->role()->detach(1);
// $user->role()->detach([1,2,3]);
}
}