thinkphp3.2之模型(M层)
最近学习了php框架thinkphp,回头总结了些学习心得知识,希望对大家有帮助
1、模型的概念:
模型(Model)是 ThinkPHP 中一个很重要的概念,粗略的理解模型就是与数据库交互信息进行curd操作的过程,与之有关的还包括模型的定义与实例化。
2、模型的实例化:
1)、实例化基础模型 (无需正式的M层存在,是thinkphp提供好的,模型的基类,实现了基本的CURD)
1、$对象 = new Model("去掉前缀的表名")
快捷创建:M
2、$对象 = M("去掉前缀的表名")
2)、实例化自定义模型 (实际通过自己在项目目录/Lib/model/)
(1)模型的命名和命名控制器的命名相似 “表名”+model.class.php
(2)创建模型类时必须继承Model这个基类
(3)模型类被本身可以不定义方法或者属性
(4)创建模型类对象
1、$对象名 = new XXXModel();
快捷创建:D 用D创建的好处是,不会每次都创建,会自动的判断如果有该类的对象,那么就不会在创建,会返回有的对象
2、$对象名 = D("XXX");
(5) 实例化多个模型(实例化一个自定义模型的时候同时附带着实例化另一个模型)
$对象名 = new XXXModel("其它模型的名称(‘User’)");
注意:此时查询的数据库数据是来自User表的数据
$对象名 = M("XXXModel:USer");
(6) 实例化空模型(在实例化的时候不知道实例化那个模型,直接实例化一个空的模型)
$对象名 = new Model();
该对象可以使用原始的sql语句 $对象名->query(“原生sql语句”);
3、数据库操作与查询(区间查询,统计查询,定位查询,原生查询)
1)
连贯操作中,如where group order limit select 等中select一定要在最后一个出现
2)
1、select()返回值二维数组 等于findAll()
建议使用select()
2、field查询指定字段(连贯方法之一)
field("username","password")->select();
3、find() 只能查询一条记录 默认是根据主键进行查询,也有数组条件,但是注意的是该数组条件是连贯操作的表达式:
如果条件是id的话:可以直接写条件,默认就是id为条件:find(id=2)
$conditon["order"] ="id desc";
$conditon["where"] ="username = 'wjc'";
4、getByUsername("admin")
5、getfield(字段1,字段2,字段3,spe分隔符)
用法:
getField($field,$sepa=null)
参数:
field(必须):要获取的字段字符串(多个用逗号分隔)
sepa(可选):字段数据间隔符号,如果是 NULL返回数组为数组。默认为null。
注:如果field是多个字段,返回数组。数组的索引是第一个字段的值,sepa为null则返回二维数组。
区间查询:
$condition["id"]=array(array("gt",12),array("lt",15),"or");
or是两个查询的关联条件,默认不写为and
$arr= $user ->where($condition)->select();
统计查询:
"统计用户名的个数:". $user->count("username")."<br>";
"统计最大的id:".$user->max("id")."<br>";
"统计最小的id:".$user->min("id")."<br>";
"统计id的和:".$user->sum("id")."<br>";
"统计id的平均值:".$user->avg("id")."<br>";
定位查询:
这些查询需要高级模型的支持:AdvModel
自定义高级模型:class UserModel extends AdvModel()
自动切换为高级模型:switchModel(‘Adv’)->first()
dump($user->first());
dump($user->last());
dump($user->getN(index));1,2,3,4,5,6
原生查询:
query() 方法是用于 SQL 查询操作,和select()方法一样返回符合查询条件的数据集。
execute()方法用于更新和写入数据的 SQL 操作(注:非查询操作,无返回数据集),返回影响的记录数。
thinkphp3.2之模型(M层)的更多相关文章
- Django基础之模型(models)层(上)
目录 Django基础之模型(models)层 单表查询 必知必会13条 神奇的双下划线查询 多表查询 外键的字段的增删改查 表与表之间的关联查询 基于双下划线的跨表查询(连表查询) 补充知识 Dja ...
- OSI模型——传输层
OSI模型——传输层 运输层 运输层概述 运输层提供应用层端到端通信服务,通俗的讲,两个主机通讯,也就是应用层上的进程之间的通信,也就是转换为进程和进程之间的通信了,我们之前学到网络层,IP协议能将分 ...
- OSI模型七层模型结构
OSI模型,即开放式通信系统互联参考模型(Open System Interconnection,OSI/RM,Open Systems Interconnection Reference Model ...
- 学习总结:CSS(二)块级与行级元素特性、盒模型、层模型、BUG与BFC、浮动模型
一.元素的块级与行级特性 在CSS属性display控制元素是否及如何显示的特性,常用的值有none.inline.block.inline-block,在CSS3中还有一些新的特性状态,在这里不做讨 ...
- Laravel5.1 模型 --远层一对多关系
远层一对多我们可以通过一个例子来充分的了解它: 每一篇文章都肯定有并且只有一个发布者 发布者可以有多篇文章,这是一个一对多的关系.一个发布者可以来自于一个国家 但是一个国家可以有多个发布者,这又是一个 ...
- 三角形的实现和盒模型、层模型、浮动模型、定位、权重、margin问题
相邻的border会平分所占的区域,出现一个斜线, .my_triangle{ width: 10px; height: 10px; background-color: blue; border-wi ...
- Java开发架构篇:DDD模型领域层决策规则树服务设计
作者:小傅哥 博客:https://bugstack.cn 沉淀.分享.成长,让自己和他人都能有所收获! 一.前言 在上一章节介绍了领域驱动设计的基本概念以及按照领域驱动设计的思想进行代码分层,但是仅 ...
- OSI模型各层详解
1. OSI概述 1.1 模拟器说明 1.1.1 模拟器的作用 搭建实验环境进行测试. 1.1.2 模拟器的类型 PT:一般是学校中使用,命令不完整,且不能抓包 GNS3:思科(CCNA,CCNP), ...
- ThinkPHP3创建Model模型--对表的操作
创建Model模型 把"Home/Model"文件夹剪切到Application文件夹下,让Home和Admin共同使用. 第一种实例化模型的方法 第二种实例化模型的方法 第三种实 ...
随机推荐
- 【Nutch2.2.1基础教程之6】Nutch2.2.1抓取流程
一.抓取流程概述 1.nutch抓取流程 当使用crawl命令进行抓取任务时,其基本流程步骤如下: (1)InjectorJob 开始第一个迭代 (2)GeneratorJob (3)FetcherJ ...
- C# txt文件读写
//读取文件内容 (1).使用FileStream类进行文件的读取,并将它转换成char数组,然后输出. ]; ]; public void Read() { try { FileStream fil ...
- python保留指定文件、删除目录其他文件的功能(1)
由于给客户的发布版本上客户改动了些代码和图片,我们这边给他们更新publish都是增量更新(开发提供更新指定的文件,我们提取出来给客户进行覆盖更新),但有时需要更新的文件较多导致不得不一个一个的进行查 ...
- Office2007设置无格式粘贴
打开Word 2007,按Alt+F11.这时会出现一个Visual Basic编辑窗口.如图所示: 上图中左上方,鼠标右击Normal→插入→模块,出现下图: 双击"模块1&q ...
- JVM virtual memory
This has been a long-standing complaint with Java, but it's largely meaningless, and usually based o ...
- NOR flash和NAND flash区别,RAM 和ROM区别d
ROM和RAM指的都是半导体存储器,ROM是Read Only Memory的缩写,RAM是Random Access Memory的缩写.ROM在系统停止供电的时候仍然可以保持数据,而RAM通常都是 ...
- C51工具是怎么进行覆盖分析的
C51工具针对8051微控制器的有限存储器资源进行了优化设计. 为了最有效地利用存储器,根据一个很容易解释的方法,自动变量和函数参数在存储器中均进行覆盖处理. 首先,连接器根据源程序生成调用树.例如: ...
- Linux/UNIX环境下Oracle数据库多实例开机启动脚本(转)
操作系统平台:RHEL 5Shell环境:BashOracle:10g2 功能描述:开机时自动切换到oracle用户下,启动oracle的多个实例.并记录数据库的启动情况到自定义的日志文件中. #!/ ...
- linux find详解
find是最常见和最强大的查找命令,你可以用它找到任何你想找的文件. find的使用格式如下: $ find <指定目录> <指定条件> <指定动作> - < ...
- 【转】ubuntu下安装及设置FTP服务器!!
原文网址:http://hujizhou.blog.51cto.com/514907/1290915 原创作品,允许转载,转载时请务必以超链接形式标明文章 原始出处 .作者信息和本声明.否则将追究法律 ...