ThinkPHP有三种创建控制器对象的方式:

  1. 通过命名空间的路径找到类然后new出来例如:$dx = new \Home\Controller\IndexController();
  2. 通过A快捷函数创建对象A("模块/控制器")例如: $dx = A("Home\Index");
  3. 通过R快捷函数创建对象并调用方法;R("Index/ShuChu")

ThinkPHP操作数据库:

首先需要在配置文件中配置数据库信息

在创建模型对象执行sql语句

创建模型对象有三种方式:

  1. 原始方式需要模型中建模型类,类名必须是数据库表名,例如:$m = new \Home\Model\InfoModel();
  2. 使用快捷函数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创建对象及数据操作的更多相关文章

  1. Entity Framework 5.0系列之数据操作

    Entity Framework将概念模型中定义的实体和关系映射到数据源,利用实体框架可以将数据源返回的数据具体化为对象:跟踪对象所做的更改:并发处理:将对象更改传播到数据源等.今天我们就一起讨论如何 ...

  2. IO流总结---- 字节流 ,字符流, 序列化 ,数据操作流,打印流 , Properties 集合

    笔记内容: 什么是流 字节流 字符流 序列化 数据操作流(操作基本数据类型的流)DataInputStream 打印流 Properties 集合 什么是流: 流是个抽象的概念,是对输入输出设备的抽象 ...

  3. Django 链接MySQL及数据操作

    Django 链接MySQL Django创建的项目自带的数据库是SQLite3,我们想要链接MySQL的话,需要更改settings.py中的配置 1.在MySQL中创建好数据库,Django项目不 ...

  4. StackExchange.Redis帮助类解决方案RedisRepository封装(字符串类型数据操作)

    本文版权归博客园和作者本人共同所有,转载和爬虫请注明原文链接 http://www.cnblogs.com/tdws/tag/NoSql/ 目录 一.基础配置封装 二.String字符串类型数据操作封 ...

  5. hive数据操作

    mdl是数据操作类的语言,包括向数据表加载文件,写查询结果等操作 hive有四种导入数据的方式 >从本地加载数据 LOAD DATA LOCAL INPATH './examples/files ...

  6. ThinkPHP 表单提交操作成功后执行JS操作如何刷新父页面或关闭当前页等操作

    ThinkPHP 表单提交操作成功后执行JS操作如何刷新父页面或关闭当前页等操作 .操作成功后刷新父页面 $this->assign('jumpUrl', "javascript:wi ...

  7. ThinkPHP模板中如何操作session,以及如果session中保存的是数组的情况

    在ThinkPHP的模板中操作session时,可以参考ThinkPHP参考文档中的“模板—>系统变量”部分,在默认模板引擎中,语法如下: {$Think.session.user} //输出s ...

  8. Dapper 数据操作框架

    数据操作DapperFrom NuGet:Install-Package DapperorInstall-Package Dapper.StrongName微型ORM:PetaPoco获得PetaPo ...

  9. Django数据操作F和Q、model多对多操作、Django中间件、信号、读数据库里的数据实现分页

    models.tb.objects.all().using('default'),根据using来指定在哪个库里查询,default是settings中配置的数据库的连接名称. 外话:django中引 ...

随机推荐

  1. 0721JS

    输入三个整数,x,y,z,最终以从小到大的方式输出 <!--<script> var x=prompt("请输入数字") var y=prompt("请 ...

  2. css盒子边框样式

    边框样式有全边框和单个边框样式,可对每条边设置不同的样式 如下代码P1为全边框样式,P2为单个边框设置不同的样式: <!DOCTYPE html> <html lang=" ...

  3. .Net MVC&&datatables.js&&bootstrap做一个界面的CRUD有多简单

    我们在项目开发中,做得最多的可能就是CRUD,那么我们如何在ASP.NET MVC中来做CRUD呢?如果说只是单纯实现功能,那自然是再简单不过了,可是我们要考虑如何来做得比较好维护比较好扩展,如何做得 ...

  4. JavaWeb王者归来学习笔记

    JavaWeb王者归来学习笔记... Ajax王者归来: Ajax:Asynchronous JavaScript And XML -------Ajax 是一些旧有技术的结合.但却以一种新的姿态.披 ...

  5. 谈谈培训机构的"骗局"给新人一些建议

    前言 本文只谈"骗局",不谈其他,绝不引战,如有错误,希望指出我会及时改正,想要讨论的可以在留言区写下你的观点和经历. 为什么要写这篇文章呢,近些年培训这个话题也比较火,很多在看这 ...

  6. 常用px,pt,em换算及区别

    pt (point,磅):是一个物理长度单位,指的是72分之一英寸. px (pixel,像素):是一个虚拟长度单位,是计算机系统的数字化图像长度单位,如果px要换算成物理长度,需要指定精度DPI(D ...

  7. SpringMVC(二)--处理数据模型、ModelAndView、Model、Map、重定向、@ModelAttribute、

    1.处理模型数据 Spring MVC 提供了以下几种途径输出模型数据:      – ModelAndView:处理方法返回值类型为 ModelAndView 时, 方法体即可通过该对象添加模型数据 ...

  8. 1_NAT模式和桥接模式下的网络配置

    相信当你看到这篇文章时,你一定对linux的桥接模式和NAT模式有所了解,所以你应该是能看懂这篇文件的,希望对你有所帮助,figthing    ! 一.桥接模式:虚拟机和主机是连在同一个路由下的. ...

  9. STL空间配置器

    1.什么是空间配置器? 空间配置器负责空间配置与管理.配置器是一个实现了动态空间配置.空间管理.空间释放的class template.以内存池方式实现小块内存管理分配.关于内存池概念可以点击:内存池 ...

  10. vue.js基础知识篇(6):组件详解

    第11章:组件详解 组件是Vue.js最推崇也最强大的功能之一,核心目标是可重用性. 我们把组件代码按照template.style.script的拆分方式,放置到对应的.vue文件中. 1.注册 V ...