表结构:

映射关系:

UserRelationModel会取UserRelation为表名称。所以要自定义表名称:

//定义主表名称
protected $tableName = 'User';

<?php
Class UserRelationModel extends RelationModel {
//定义主表名称
protected $tableName = 'User'; //定义关联模型
protected $_link = array(
'Role' => array(
'mapping_type' => MANY_TO_MANY,      //多对多关系
'foreign_key' => 'user_id',        //role对应的外键关系
'relation_foreign_key' => 'role_id',   //user表对应的外键关系
'relation_table' => 'ms_role_user',    //要关联的表
'mapping_fields' => 'id, name, remark' //关联哪些字段
)
);
}

查询的结果:

Array
(
[0] => Array
(
[id] => 1
[username] => admin
[logintime] => 1455336937
[loginip] => 127.0.0.1
[lock] => 0
[Role] => Array
(
) ) [1] => Array
(
[id] => 2
[username] => thinkbaitang
[logintime] => 1455339999
[loginip] => 127.0.0.1
[lock] => 0
[Role] => Array
(
[0] => Array
(
[id] => 1
[name] => Manager
[remark] => 普通管理员
) [1] => Array
(
[id] => 2
[name] => Admin
[remark] => 高级管理员
) ) ) [2] => Array
(
[id] => 3
[username] => zhangsna
[logintime] => 1455340000
[loginip] => 127.0.0.1
[lock] => 0
[Role] => Array
(
[0] => Array
(
[id] => 1
[name] => Manager
[remark] => 普通管理员
) [1] => Array
(
[id] => 2
[name] => Admin
[remark] => 高级管理员
) [2] => Array
(
[id] => 3
[name] => SuperAdmin
[remark] => 超级管理员
) ) ) )

ThinkPHP - 关联模型 - 多对多的更多相关文章

  1. ThinkPHP 关联模型(二十)

    原文:ThinkPHP 关联模型(二十) ThinkPHP关联模型 两表关联查询:Message 和  user  关联条件uid(参考手册:模型->关联模型) 步骤: 一:创建Message表 ...

  2. ThinkPHP关联模型详解

    在ThinkPHP中,关联模型更类似一种mysql中的外键约束,但是外键约束更加安全,缺点却是在写sql语句的时候不方便,ThinkPHP很好得解决了这个问题.但是很多人不动关联模型的意思.现在就写个 ...

  3. ThinkPHP关联模型如何关联非主键

    ThinkPHP关联模型默认是主键外键关联 官方并没有提供相关文档 如何实现非主键与非主键间之间的关联 <?php namespace Admin\Model; use Think\Model\ ...

  4. thinkphp 关联模型配置代码

    <?php /** * 公司与部门关联模型 */ class CompanyRelationModel extends RelationModel{ //主表名称 protected $tabl ...

  5. Thinkphp 关联模型和试图模型区别

    关联模型主要在多表操作时使用,比如 user表,user_role表,role表 user_role字段:uid,rid,它作为中间表,负责将user和role之间的,1对1,1对多,多对多的关系进行 ...

  6. ThinkPHP 关联模型中查询某条记录的父级(非查询子级)

    数据表 id      cat_name      cat_pid 76     手机.数码     0 84     手机配件        76 86     蓝牙耳机        84 从属关 ...

  7. Thinkphp 关联模型

    1.定义关联模型 2.使用关联模型 D('BlogRelation')->relation(true)->add($data);

  8. Thinkphp关联模型使用

    1.需求描述 首页文章列表,需要同时获取文章的点赞和被关注数,同时如果被当前用户点赞或关注了会显示相应小图标进行区别.图示如下: 2.解决方案 数据库设计: 文章对应Article表,其中包括收藏数字 ...

  9. ThinkPHP - 关联模型 - 一对多

    使用之前,先引入文件夹,否则相应的功能不能实现. 如果对thinkPHP不精通,使用或开发的时候,最好直接使用完成版本的ThinkPHP. 关系模型定义: <?php /** * 继承自 Rel ...

随机推荐

  1. 【转】 一个fork的面试题

    转自:一个fork的面试题 前两天有人问了个关于Unix的fork()系统调用的面试题,这个题正好是我大约十年前找工作时某公司问我的一个题,我觉得比较有趣,写篇文章与大家分享一下.这个题是这样的: 题 ...

  2. MFC 简单实现 DES 算法

    前言 徐旭东老师说过学者就应该对知识抱有敬畏之心,所以我的博客的标题总喜欢加上"简单"二字,就是为了提醒自己,自己所学知识只是皮毛,离真理还远矣. DES 算法 DES算法是密码体 ...

  3. 09-C语言数组

    目录: 一.使用xcode编辑工具 二.数组 三.数组遍历 四.多维数组 回到顶部 一.使用xcode编辑工具 1 打开xcode程序 2 创建一个项目 OSX -> Application - ...

  4. IOS 学习笔记(7) 控件 分隔栏控件(UISegmentControl)的使用方法

    分隔栏控件的系统默认式样一共有3种,分别是“普通式样”,"边框式样","条状式样" 分隔栏控件中有一个momentary属性,默认时NO.当开发者配置成YES时 ...

  5. C# 读书笔记之访问虚方法、重写方法和隐藏方法

    C#允许派生类中的方法与基类中方法具有相同的签名:基类中使用关键字virtual定义虚方法:然后派生类中使用关键字override来重写方法,或使用关键字new来覆盖方法(隐藏方法). 重写方法用相同 ...

  6. 射频识别技术漫谈(22)——RC系列射频芯片的寄存器操作

    前面提到,RC系列内部64个寄存器的正确操作是软件编写的关键.正确设置寄存器首先要做到与寄存器正确通信,其次是要对寄存器写入正确的值. RC系列射频芯片与微控制器的接口有并口和SPI接口两种类型.显然 ...

  7. 在GridView中实现全选反选的例子

    <%@ Page Language="C#" AutoEventWireup="true" CodeBehind="GridView控件.asp ...

  8. Microsoft 收购 Apiphany

    StevenMartinMS 2013 年 10 月 23 日上午 10:00 今天,我高兴地宣布我们收购了业界领先的 API 管理交付平台 - Apiphany. 应用程序可扩展性已经不算什么新鲜事 ...

  9. LayoutInflater作用是将layout的xml布局文件实例化为View类对象。

    获取LayoutInflater的方法有如下三种: LayoutInflater inflater=(LayoutInflater)context.getSystemService(Context.L ...

  10. 汇编语言学习——第二章 寄存器(CPU工作原理)

    1.一个典型的CPU由运算器.控制器.寄存器等器件组成,这些器件靠内部总线相连. 区别: 内部总线实现CPU内部各个器件之间的联系. 外部总线实现CPU和主板上其它器件的联系. 8086CPU有14个 ...