温馨提示×

温馨提示×

您好,登录后才能下订单哦!

密码登录×
登录注册×
其他方式登录
点击 登录注册 即表示同意《亿速云用户服务条款》

TP中的模型关联的多对多关系

发布时间:2020-08-04 18:35:04 来源:网络 阅读:1508 作者:huangbeibei 栏目:web开发

TP5中完全推翻了3.2的做法,不再使用原来的查询语句,比如select,join之类的条件查询。而是使用模型关联,一对多和多对多的关系进行关联。方便用户调用数据,减少代码的编写量。

下面直接开始上代码:

role.php(model层)

class Role extends Model{

   public function Nodes()

   {

       return $this->belongsToMany('Node','RoleAuthorization','node_id','role_id');

   }

}

user.php(model层)

class User extends Model{

    public function Roles(){

       return  $this->belongsToMany('Role','RoleUser','pms_role_id','pms_user_id');

    } 

}

另外几张表只需要写一个模型就OK,不用写任何东西,它会自动调用。(node,roleauthorization,roleuser)

在控制器调用model,直接实例化,调用你写的方法

$user_model  = Loader::model('User');

        $user_result = $user_model->get(1);

        echo $user_result.'<br/>';


        $data = $user_result->Roles;

        foreach ($data as $key => $value) {

            echo $value['id'].'<br/>';

            echo $value['name'].'<br/>';

            // $aa = $data->Nodes;

            // dump($value->Nodes);

            foreach ($value->Nodes as $pk=>$pv){

                   echo $pv->node."<br/>";

               }

        }

首先,字段pms_role_id,pms_user_id字段在中间表roleuser里,注意字段的顺序,根据你关联表的顺序来进行写的,顺序错误数据就会不对。node_id,role_id字段在roleauthorization表里。

向AI问一下细节

免责声明:本站发布的内容(图片、视频和文字)以原创、转载和分享为主,文章观点不代表本网站立场,如果涉及侵权请联系站长邮箱:is@yisu.com进行举报,并提供相关证据,一经查实,将立刻删除涉嫌侵权内容。

AI