表结构:

映射关系:

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. Servlet之ServletContext以及文件操作

    ServletContext ------------------------------------ ServletContext是什么? 与cookie,session比较. 可以把它想象成一个共 ...

  2. AeroSpike 记录

    1.基本概念: namespace:类似关系型数据库中的schema,这个需要在配置文件中配置,可以指定存储引擎.存储大小.备份数.存活时间等 set:类似关系型数据库中的表 record:类似关系型 ...

  3. Ubuntu 12.04环境下配置Postgresql和phppgadmin

    Ubuntu 12.04环境下配置Postgresql 9.1 和phppgadmin 本系列文章由ex_net(张建波)编写,转载请注明出处. http://blog.csdn.net/zjianb ...

  4. canvas绘制弹跳小球

    <!doctype html> <html> <head> <meta charset="UTF-8"> <title> ...

  5. excel读入数据库

    POI3.9效率大幅度提高,支持xls以及xlsx. 首先需要POI的JAR包,MAVEN配置如下: <!-- excel start --> <dependency> < ...

  6. Protel99SE制作拼板的方法

    制作步骤: 1.在PCB编辑里按快捷键 S/A全选复制源PCB全部内容,再按Ctrl+C看到十字光标.点击左键. 2.打开目标PCB文件,点击Edit菜单,在下拉菜单中点击Paste special( ...

  7. Protel 99SE铺铜问题总结

    一.PCB电路板放置铺铜有什么作用? 散热: 屏蔽 抗干扰 pcb板子带有寄生电容: 提高板子强度: 美观: 增加被抄板的难度,尤其是覆铜+黑油.   二.PROTEL不规则铺铜的方法: 1.先要知道 ...

  8. rpc的学习

    rpc(Remote process call 即远程过程调用)是一种请求-相应的协议, 主要使用于C/S架构中,使得分布式系统成为可能.由客户端发起请求,服务端调用各种参数处理请求,当服务器在处理请 ...

  9. BZOJ 1739: [Usaco2005 mar]Space Elevator 太空电梯

    题目 1739: [Usaco2005 mar]Space Elevator 太空电梯 Time Limit: 5 Sec  Memory Limit: 64 MB Description The c ...

  10. JSP 9 大内置对象详解

    内置对象特点: 1.            由JSP规范提供,不用编写者实例化. 2.            通过Web容器实现和管理 3.            所有JSP页面均可使用 4.     ...