1、显示TRACE界面,首选需要在显示模版界面,$this->display(),然后需要在配置文件中配置

  SHOW_PAGE_TRACE => true

2、关联模型使用

  主表以user为例

  定义关联模型:

  Class UserRelationModel extends RelationModel{

  {

    protected $tableName = 'User';//由于在定义关联模型的时候不是使用了默认名称UserModel而是使用的是UserRelationModel,就需要定义$tableName变量

    protected $_link = array(

      'profile'=>array(//关联表1 profile档案表 关联名称一般命名成 关联表名 如果不是 在需要定义 mapping_class 表名

        'mapping_type'=>HAS_ONE,//主表与从表的关系 HAS_MANY BELONGS_TO MANY_TO_MANY
        'mapping_class'=>'Profile',//关联的模型类名 一般以关联表名命名。如果关联名称命名为表名了 此处可以不定义。
        'mapping_name'=>'profile',//关联映射名称,用于读取或更新时 显示的 字段名称 例如:关联读取的时候 在数组中得到的profile中数据会作为 mapping_name中定义名字作为数组键名
        'foreign_key'=>'uid',//外键名,这里指profile中的外键
      ),     );   }

3、MANY_TO_MANY 关联模式:需要有一个中间表

  blog表中每个文章有多个属性(置顶、推荐、精华等)

  attr表中每个属性都可以存在与多篇文章中

  这样子必须有一个中间表 blog_attr,其表结构只需要为 bid aid ,其中bid为blog id ,aid 为attr id

  Class BlogRelationModel extends RelationModel{

    protected $tableName = 'blog',

    protected $_link = array(

      'attr'=>array(

        'mapping_type'=>MANY_TO_MANY,//关联类型

        'mapping_name'=>'attribute',//映射名称

        'foreign_key'=>'bid',//主表在中间表中的外键

        'relation_foreign_key'=>'aid',//关联表在中间表中的外键

        'relation_table'=>'blog_attr',//中间表名称

      ),

    );

  }

ThinkPHP3.1.3在关联多对多插入数据的时候会将中间表数据先清除,这是个小bug,多对多关联更新的时候需要重新编辑代码

4、在ThinkPHP中插入数据采用M('user')->add($data);其中$data是一个一位数组

  $data = array(

    'name'=>'11111',

    'age'=>'20'

  );

  如果要一次性插入多条数据,可以用addAll($data);其中$data是二维数组。

  也可以自己组合SQL语句的方式插入多条数据 $sql = "INSERT INTO user(name,age) values('111','1'),('222','2')"

    INSERT [LOW_PRIORITY | DELAYED] [IGNORE]
[INTO] tbl_name [(col_name,...)]
VALUES (expression,...),(...),...

  M('user')->query($sql);执行sql语句。

5、一个关联模型中可以关联多个表,在控制器使用方式如下:

  D('UserRelation')->relation(true)->select();

  如果里面存在多个关联方式,而不是要全部使用可以采用

  D('UserRelation')->relation('profile')->select()方式,选择其中一个。

6、mapping_fields=>'字段列表' 指定关联表中读取那些字段。as_fields=>'字段1,字段2:显示名2',指定结果直接显示在数组中,而非是另外一个数组。

ThinkPHP第十四天(显示TRACE界面配置,关联模型详解定义)的更多相关文章

  1. ThinkPHP关联模型详解

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

  2. “全栈2019”Java多线程第二十八章:公平锁与非公平锁详解

    难度 初级 学习时间 10分钟 适合人群 零基础 开发语言 Java 开发环境 JDK v11 IntelliJ IDEA v2018.3 文章原文链接 "全栈2019"Java多 ...

  3. “全栈2019”Java多线程第二十二章:饥饿线程(Starvation)详解

    难度 初级 学习时间 10分钟 适合人群 零基础 开发语言 Java 开发环境 JDK v11 IntelliJ IDEA v2018.3 文章原文链接 "全栈2019"Java多 ...

  4. “全栈2019”Java第一百零四章:匿名内部类与外部成员互访详解

    难度 初级 学习时间 10分钟 适合人群 零基础 开发语言 Java 开发环境 JDK v11 IntelliJ IDEA v2018.3 文章原文链接 "全栈2019"Java第 ...

  5. “全栈2019”Java第六十九章:内部类访问外部类成员详解

    难度 初级 学习时间 10分钟 适合人群 零基础 开发语言 Java 开发环境 JDK v11 IntelliJ IDEA v2018.3 文章原文链接 "全栈2019"Java第 ...

  6. 《手把手教你》系列技巧篇(五十)-java+ selenium自动化测试-字符串操作-上篇(详解教程)

    1.简介 自动化测试中进行断言的时候,我们可能经常遇到的场景.从一个字符串中找出一组数字或者其中的某些关键字,而不是将这一串字符串作为结果进行断言.这个时候就需要我们对字符串进行操作,宏哥这里介绍两种 ...

  7. FFmpeg开发笔记(四):ffmpeg解码的基本流程详解

    若该文为原创文章,未经允许不得转载原博主博客地址:https://blog.csdn.net/qq21497936原博主博客导航:https://blog.csdn.net/qq21497936/ar ...

  8. 【Android Studio安装部署系列】三十二、Android模拟器Genymotion安装使用教程详解

    版权声明:本文为HaiyuKing原创文章,转载请注明出处! 一.注册\登录 打开Genymotion官网,https://www.genymotion.com/ ,首先点击右上角的Sign in进行 ...

  9. 全网最详细的大数据集群环境下多个不同版本的Cloudera Hue之间的界面对比(图文详解)

    不多说,直接上干货! 为什么要写这么一篇博文呢? 是因为啊,对于Hue不同版本之间,其实,差异还是相对来说有点大的,具体,大家在使用的时候亲身体会就知道了,比如一些提示和界面. 安装Hue后的一些功能 ...

随机推荐

  1. jQuery $.each用法比较详细了

    以下内容非原创,来自百度文库http://wenku.baidu.com/view/4796b6145f0e7cd18425368e.html 通过它,你可以遍历对象.数组的属性值并进行处理. 使用说 ...

  2. 【MongoDB数据库】MongoDB 命令入门初探

    MongoDB是一款NoSql数据库,使用了"面向集合"(Collection-Oriented)原理,意思是数据被分组存储在数据集中,被称为一个集合(Collection).每一 ...

  3. 怎么限制Google自己主动调整字体大小

    Google默认的字体大小是12px,当样式表中font-size<12px时,或者没有明白指定字体大小,则在chrome浏览器里字体显示是12px. 近期在写代码玩的时候,我也碰到了 在FF和 ...

  4. HDOJ 1495 非常可乐 【BFS】

    非常可乐 Time Limit: 2000/1000 MS (Java/Others)    Memory Limit: 32768/32768 K (Java/Others) Total Submi ...

  5. mvc下载文件

    MVC下载文件方式 方式一: public FileStreamResult DownFile(string filePath, string fileName)  {       string ab ...

  6. CheckBox只选择一项

    最近做一个问卷的页面,客户那边说要使用checkbox而且只能选择一项 就写了下面的代码 <html xmlns="http://www.w3.org/1999/xhtml" ...

  7. 创建一个支持异步操作的operation

    NSOperationQueue时iOS中常用的任务调度机制.在创建一个复杂任务的时候,我们通常都需要编写NSOperation的子类.在大部分情况下,重写main方法就可以满足要求.main方法执行 ...

  8. 关于win7系统的Oracle安装时的[INS-30131]问题的解决方案

    我是今天晚上安装的Oracle,结果在第二步遇到了这个问题,前后折腾了两个小时,百度了很多解决方案,终于解决了这个问题; 由于我的电脑系统还是win7的系统,其他的我没试过,不过也差不多都这么解决; ...

  9. Linux流量监控工具使用总结 - iftop

    在类Unix系统中可以使用top查看系统资源.进程.内存占用等信息.查看网络状态可以使用netstat.nmap等工具.若要查看实时的网络流量,监控TCP/IP连接等,则可以使用iftop. 一.if ...

  10. hdu 3529 Bomberman - Just Search! 重复覆盖

    题目链接 依然是重复覆盖的模板.... #include<bits/stdc++.h> using namespace std; #define pb(x) push_back(x) #d ...