ThinkPHP第十四天(显示TRACE界面配置,关联模型详解定义)
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界面配置,关联模型详解定义)的更多相关文章
- ThinkPHP关联模型详解
在ThinkPHP中,关联模型更类似一种mysql中的外键约束,但是外键约束更加安全,缺点却是在写sql语句的时候不方便,ThinkPHP很好得解决了这个问题.但是很多人不动关联模型的意思.现在就写个 ...
- “全栈2019”Java多线程第二十八章:公平锁与非公平锁详解
难度 初级 学习时间 10分钟 适合人群 零基础 开发语言 Java 开发环境 JDK v11 IntelliJ IDEA v2018.3 文章原文链接 "全栈2019"Java多 ...
- “全栈2019”Java多线程第二十二章:饥饿线程(Starvation)详解
难度 初级 学习时间 10分钟 适合人群 零基础 开发语言 Java 开发环境 JDK v11 IntelliJ IDEA v2018.3 文章原文链接 "全栈2019"Java多 ...
- “全栈2019”Java第一百零四章:匿名内部类与外部成员互访详解
难度 初级 学习时间 10分钟 适合人群 零基础 开发语言 Java 开发环境 JDK v11 IntelliJ IDEA v2018.3 文章原文链接 "全栈2019"Java第 ...
- “全栈2019”Java第六十九章:内部类访问外部类成员详解
难度 初级 学习时间 10分钟 适合人群 零基础 开发语言 Java 开发环境 JDK v11 IntelliJ IDEA v2018.3 文章原文链接 "全栈2019"Java第 ...
- 《手把手教你》系列技巧篇(五十)-java+ selenium自动化测试-字符串操作-上篇(详解教程)
1.简介 自动化测试中进行断言的时候,我们可能经常遇到的场景.从一个字符串中找出一组数字或者其中的某些关键字,而不是将这一串字符串作为结果进行断言.这个时候就需要我们对字符串进行操作,宏哥这里介绍两种 ...
- FFmpeg开发笔记(四):ffmpeg解码的基本流程详解
若该文为原创文章,未经允许不得转载原博主博客地址:https://blog.csdn.net/qq21497936原博主博客导航:https://blog.csdn.net/qq21497936/ar ...
- 【Android Studio安装部署系列】三十二、Android模拟器Genymotion安装使用教程详解
版权声明:本文为HaiyuKing原创文章,转载请注明出处! 一.注册\登录 打开Genymotion官网,https://www.genymotion.com/ ,首先点击右上角的Sign in进行 ...
- 全网最详细的大数据集群环境下多个不同版本的Cloudera Hue之间的界面对比(图文详解)
不多说,直接上干货! 为什么要写这么一篇博文呢? 是因为啊,对于Hue不同版本之间,其实,差异还是相对来说有点大的,具体,大家在使用的时候亲身体会就知道了,比如一些提示和界面. 安装Hue后的一些功能 ...
随机推荐
- Pig Latin儿童黑话(java)
●假设单词以辅音字母開始,将词首的辅音字母字符串(第一个元音字母前的全部字母)从单词的开头移动到末尾,然后加上后缀ay,这样就形成了它的pig latin. ●假设单词以元音字母開始,仅仅须要 ...
- VB6关于判断模态窗体的问题
模态窗体也有人叫模式窗体,是否为模态窗体由Show方法的参数决定: 语法 object.Show style, ownerform Show 方法的语法包含下列部分: 部分 描述 object 可选的 ...
- 漏掉的账目(用C语言去重)
问题描述: 某财务部门结账时发现总金额不对头.很可能是从明细上漏掉了某1笔或几笔.如果已知明细账目清单,能通过编程找到漏掉的是哪1笔或几笔吗? 如果有多种可能,则输出所有可能的情况. 我们规定:用户输 ...
- ItextSharp代码示例
示例代码目录 示例代码0101. 5 示例代码0102. 7 示例代码0103. 9 示例代码0104. 11 示例代码0105. 13 示例代码0106. 15 示例代码0107. 17 示例代码0 ...
- 弹出窗口a标签写下载,再弹出窗口
如果这个窗口是弹出出口,直接<a href="">点击下载<a>是不行的,得用js这样写,弹出并关闭,不然会回到首页,如果没有定义首页会报错,<a h ...
- R与数据分析旧笔记(十八完结) 因子分析
因子分析 因子分析 降维的一种方法,是主成分分析的推广和发展 是用于分析隐藏在表面现象背后的因子作用的统计模型.试图用最少的个数的不可测的公共因子的线性函数与特殊因子之和来描述原来观测的每一分量 因子 ...
- 基于jQuery带标题的图片3D切换焦点图
今天给大家分享一款基于jQuery带标题的图片3D切换焦点图.这款焦点图适用浏览器:IE8.360.FireFox.Chrome.Safari.Opera.傲游.搜狗.世界之窗. 实现的代码. htm ...
- 理解angular中的module和injector,即依赖注入
理解angular中的module和injector,即依赖注入 依赖注入(DI)的好处不再赘言,使用过spring框架的都知道.angularjs作为前台js框架,也提供了对DI的支持,这是java ...
- HDU 1076 An Easy Task
题解:枚举即可…… #include <cstdio> int main(){ int now,y,n,T,count; scanf("%d",&T); whi ...
- Noip2013错误避免
很多的时候,我们会说,这道题我会做,算法想出来了,但是这里那里少了一些判断,导致一分未得,或是说变量名错误,或者说干脆是文件名错误.这些都不是理由,如果火箭发射半空爆炸,可以说是控制器中一个运算符错误 ...