TP中的模型关联的多对多关系-创新互联

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

创新互联专注为客户提供全方位的互联网综合服务,包含不限于成都网站设计、成都网站制作、邵东网络推广、成都小程序开发、邵东网络营销、邵东企业策划、邵东品牌公关、搜索引擎seo、人物专访、企业宣传片、企业代运营等,从售前售中售后,我们都将竭诚为您服务,您的肯定,是我们大的嘉奖;创新互联为所有大学生创业者提供邵东建站搭建服务,24小时服务热线:13518219792,官方网址:www.cdcxhl.com

下面直接开始上代码:

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.'
';

    $data = $user_result->Roles;

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

      echo $value['id'].'
';

      echo $value['name'].'
';

      // $aa = $data->Nodes;

      // dump($value->Nodes);

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

          echo $pv->node."
";

        }

    }

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

另外有需要云服务器可以了解下创新互联cdcxhl.cn,海内外云服务器15元起步,三天无理由+7*72小时售后在线,公司持有idc许可证,提供“云服务器、裸金属服务器、高防服务器、香港服务器、美国服务器、虚拟主机、免备案服务器”等云主机租用服务以及企业上云的综合解决方案,具有“安全稳定、简单易用、服务可用性高、性价比高”等特点与优势,专为企业上云打造定制,能够满足用户丰富、多元化的应用场景需求。


本文名称:TP中的模型关联的多对多关系-创新互联
网站URL:http://pwwzsj.com/article/degoeh.html