thinkphp创建对象及数据操作
ThinkPHP有三种创建控制器对象的方式:
- 通过命名空间的路径找到类然后new出来例如:$dx = new \Home\Controller\IndexController();
- 通过A快捷函数创建对象A("模块/控制器")例如: $dx = A("Home\Index");
- 通过R快捷函数创建对象并调用方法;R("Index/ShuChu")
ThinkPHP操作数据库:
首先需要在配置文件中配置数据库信息
在创建模型对象执行sql语句
创建模型对象有三种方式:
- 原始方式需要模型中建模型类,类名必须是数据库表名,例如:$m = new \Home\Model\InfoModel();
- 使用快捷函数D:$m = D("Info");需要注意的是如果没有模型类可以不加参数,对象就是model父类的对象
3、使用快捷函数M:$m = M("Nation");
操作数据库:
首先介绍一下连贯函数,就是返回值是:$this,也就是说返回自身对象,可以继续调用函数
数据库操作中基本的函数:select("主键值【,主键值】")、find("主键值"),聚合函数不是连贯函数。
具体用法如下如下:(可以参考手册)
操作数据库
$attr = $m->select(); //查询所有数据
$attr = $m->select("p001,p002,p003");
$attr = $m->find("p001"); //找特定的数据根据主键值找
where可以加查询条件
$attr = $m->where("code='p001' or sex=true")->select();
table可以切换要操作的表
$attr = $m->table("Nation")->select();
alias可以设置表的别名
$attr = $m->alias("人员")->select();
field可以指定查询的字段
$attr = $m->field("code,name")->select();
order可以加排序条件
$attr = $m->order("Nation desc")->select();
group可以分组
$attr = $m->field("Nation")->group("Nation")->select();
having可以加分组后的条件
$attr = $m->field("Nation")->group("Nation")->having("count(*)>5")->select();
join可以连接多个表,在field里面要给字段加别名
$attr = $m->field("Info.Code as 代号,Info.Name as 姓名,Sex as 性别,Nation.Name as 民族名称")->join("Nation on Info.Nation = Nation.Code")->select();
union联合查询
$attr = $m->field("name")->union("select name from nation")->select();
distinct去重
$attr = $m->field("Nation")->distinct(true)->select();
limit可以分页,参数第一个代表跳过多少条,第二个代表取多少条
$attr = $m->limit(10,5)->select();
page可以分页。第一个参数代表是当前页,第二个参数代表每页多少条
$attr = $m->page(3,5)->select();
取数据总条数
$attr = $m->count("*");
取某一列的和
$attr = $m->table("Car")->sum("Price");
取平均值
$attr = $m->table("Car")->avg("Price");
取最大值
$attr = $m->table("Car")->max("Price");
取最小值
$attr = $m->table("Car")->min("Price");
$sql = "select * from Info where Nation='n001'";
$attr = $m->query($sql);
$sql = "insert into Nation values('n104','按实际')";
$attr = $m->execute($sql);
$attr = $m->field("Info.Code as code,Info.Name as name,sex,Nation.Name as nationname,birthday")->join("Nation on Info.Nation = Nation.Code")->select();
$this->assign("info",$attr);
$this->assign("test",10);
$this->display();
ThinkPHP内置标签
<table width="100%" border="1" cellpadding="0" cellspacing="0">
<tr>
<td>代号</td>
<td>姓名</td>
<td>性别</td>
<td>民族</td>
<td>生日</td>
</tr>
<foreach name="info" item="v" > //name是传过来的名字,item是数组元素
<tr>
<td><{$v.code}></td>
<td><{$v.name}></td>
<td><{$v["sex"]?"男":"女"}></td> //三目运算符不支持点操作
<td><{$v.nationname}></td>
<td><{$v.birthday}></td>
</tr>
</foreach>
</table>
<if condition="$test gt 10"> //condition是条件,因为是标签为了防止歧义用备用词
hello 5
<else />
hello 10
</if>
thinkphp创建对象及数据操作的更多相关文章
- Entity Framework 5.0系列之数据操作
Entity Framework将概念模型中定义的实体和关系映射到数据源,利用实体框架可以将数据源返回的数据具体化为对象:跟踪对象所做的更改:并发处理:将对象更改传播到数据源等.今天我们就一起讨论如何 ...
- IO流总结---- 字节流 ,字符流, 序列化 ,数据操作流,打印流 , Properties 集合
笔记内容: 什么是流 字节流 字符流 序列化 数据操作流(操作基本数据类型的流)DataInputStream 打印流 Properties 集合 什么是流: 流是个抽象的概念,是对输入输出设备的抽象 ...
- Django 链接MySQL及数据操作
Django 链接MySQL Django创建的项目自带的数据库是SQLite3,我们想要链接MySQL的话,需要更改settings.py中的配置 1.在MySQL中创建好数据库,Django项目不 ...
- StackExchange.Redis帮助类解决方案RedisRepository封装(字符串类型数据操作)
本文版权归博客园和作者本人共同所有,转载和爬虫请注明原文链接 http://www.cnblogs.com/tdws/tag/NoSql/ 目录 一.基础配置封装 二.String字符串类型数据操作封 ...
- hive数据操作
mdl是数据操作类的语言,包括向数据表加载文件,写查询结果等操作 hive有四种导入数据的方式 >从本地加载数据 LOAD DATA LOCAL INPATH './examples/files ...
- ThinkPHP 表单提交操作成功后执行JS操作如何刷新父页面或关闭当前页等操作
ThinkPHP 表单提交操作成功后执行JS操作如何刷新父页面或关闭当前页等操作 .操作成功后刷新父页面 $this->assign('jumpUrl', "javascript:wi ...
- ThinkPHP模板中如何操作session,以及如果session中保存的是数组的情况
在ThinkPHP的模板中操作session时,可以参考ThinkPHP参考文档中的“模板—>系统变量”部分,在默认模板引擎中,语法如下: {$Think.session.user} //输出s ...
- Dapper 数据操作框架
数据操作DapperFrom NuGet:Install-Package DapperorInstall-Package Dapper.StrongName微型ORM:PetaPoco获得PetaPo ...
- Django数据操作F和Q、model多对多操作、Django中间件、信号、读数据库里的数据实现分页
models.tb.objects.all().using('default'),根据using来指定在哪个库里查询,default是settings中配置的数据库的连接名称. 外话:django中引 ...
随机推荐
- SQL中 LEFT JOIN ,RIGHTJOIN,INNER JOIN 的使用及优先级浅析
首先了解JOIN的基本概念: join 用于根据两个或多个表中的列之间的关系,从这些表中查询数据. INNER JOIN:在表中存在至少一个匹配时,INNER JOIN 关键字返回行. LEFT JO ...
- Spring集成RabbitMQ-使用RabbitMQ更方便
如果提到Spring,你脑海中对他的印象还停留在SSH三大框架之一,那或许你该好好重新认识这个家伙. 在IT技术日新月异的今天,他还能让你忘不了并与他朝夕相处,他,肯定有自己的绝活.如今他早已经不是孤 ...
- Velocity.js的使用
前面的话 Velocity是一款优秀的JS动画库,完全可以作为jQuery的animate的替代品.需要动画功能时,使用Velocity是一个好选择.本文将详细介绍Velocity.js的使用 概述 ...
- C# 移动无标题栏窗体的几种方法
第一种,手工移动. 该方法根据鼠标位置实现窗体的移动.网上有很多相关的例子,这里不再多讲. 第二种,调用系统API原理:是当鼠标左键按下时,让系统认为是在标题栏按下的.这里我们用到了winapi里的W ...
- 在配置wem.xml后,Tomcat遇到问题,启动失败的解决方法
前两天在写程序时,碰到了Tomcat无法启动的问题,就是在配置完web.xml后.想必好多小伙伴都有遇到吧. 如图: 出现这个错误的原因是:在配置web.xml的时候出现了错误! 如图所示,没有修改这 ...
- PHP迭代与递归实现无限级分类
无限级分类是开发中常见的情况,因此本文对常见的无限极分类算法进行总结归纳. 1.循环迭代实现 $arr = [ 1=>['id'=>1,'name'=>'父1','father'=& ...
- 汉化Eclipse
汉化Eclipse.. ----------------- /--------------------------------link连接: 将下载的语言包解压后会有eclipse文件夹,eclips ...
- Vim 命令图解-Gvim使用笔记
Vim 命令图解-Gvim使用笔记... 参考的网址:http://blog.vgod.tw/wp-content/uploads/2014/08/vgod-vim-cheat-sheet-full. ...
- Python获取秒级时间戳与毫秒级时间戳
获取秒级时间戳与毫秒级时间戳 import time import datetime t = time.time() print (t) #原始时间数据 print (int(t)) #秒级时间戳 p ...
- Akka(22): Stream:实时操控:动态管道连接-MergeHub,BroadcastHub and PartitionHub
在现实中我们会经常遇到这样的场景:有一个固定的数据源Source,我们希望按照程序运行状态来接驳任意数量的下游接收方subscriber.又或者我需要在程序运行时(runtime)把多个数据流向某个固 ...