学无先后,达者为师

网站首页 PHP其他 正文

PHP laravel框架模使用模型实现表对表关联

作者:小洪帽i 更新时间: 2022-02-06 PHP其他

首先建立三个表:

一、用户表(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());


    }
}


定义路由进行访问即可看到输出的数据。

原文链接:https://blog.csdn.net/qq_39408664/article/details/120545019

栏目分类
最近更新