其实在TP中,说起来语句中的各个关键词都被封装成了函数,将各个由关键词演变来的函数连起来就是所谓的连贯操作。只要注意各个函数直接参数传递的区别就可以了。

再者,不是所有的函数都可以进行连贯操作!!!比如select()

支持连贯操作的函数集合

不用特意去记,代码是敲出来的,只要用的多了就没有问题了

示例:

 //数组操作
$user = M('User');
var_dump($user->select( array('where'=>'id in (1,2,3,4)', 'limit'=>'2',//不是连贯操作
'order'=>'date DESC')));
//CURD处理,CURD会在专门章节讲解
$user = M('User');
var_dump($user->where('id=1')->find());
var_dump($user->where('id=7')->delete());

详细介绍:

1.where,前边已经讲过,参照前边

2.order 

 //倒序
$user = M('User');
$map['id'] = array('eq', 1);
var_dump($user->order('id desc')->select()); //正序默认或 ASC
//第二排序
var_dump($user->order('id desc,email desc')->select());
PS:先按 id 倒序,再按 email 倒序
//数组形式防止字段和mysql关键字冲突
$user = M('User');
$map['id'] = array('eq', 1);
var_dump($user->order( array('id'=>'DESC'))->select());

3.field

 //只显示id和user两个字段
$user = M('User');
var_dump($user->field('id, user')->select());
//使用SQL函数和别名
$user = M('User');
var_dump($user->field('SUM(id) as count, user')->select());
//使用数组参数结合SQL函数
$user = M('User');
var_dump($user->field( array('id','LEFT(user,3)'=>'left_user'))->sele
ct());
//获取所有字段
$user = M('User');
var_dump($user->field()->select()); //可以传入*号,或者省略方法
//用于写入
$user = M('User');
$user->field('user,email')->create(); //CURD 将在专门的章节学习

4.limit

 $user = M('User');
var_dump($user->limit(2)->select());
//分页查询
$user = M('User');
var_dump($user->limit(0,2)->select()); //2,2、,4,2

5.page

 //page分页
$user = M('User');
var_dump($user->page(1,2)->select()); //2,2、3,2

6.table

 //切换数据表
$user = M('User');
var_dump($user->table('think_info')->select());
//获取简化表名
$user = M('User');
6 var_dump($user->table('__USER__')->select()); //__INFO__尚可
//多表查询
$user = M('User');
var_dump($user->field('a.id,b.id')->table('__USER__ a,__INFO__
b')->select());
//多表查询,使用数组形式避免关键字冲突
$user = M('User');
var_dump($user->field('a.id,b.id')->table( array('think_user'=>'a',
'think_info'=>'b'))->select());

7.alias

 alias 用于设置数据表别名
//设置别名
$user = M('User');
var_dump($user->alias('a')->select());

8.group

 //group 方法通常用于对结合函数统计的结果集分组。
//分组统计
$user = M('User');
var_dump($user->field('user,max(id)')->group('id')->select());

9.having

 //having 方法一般用于配合 group 方法完成从分组的结果中再筛选数据。
//分组统计结合having
$user = M('User');
var_dump($user->field('user,max(id)')->group('id')->having('id>2')->
select());

10.comment

 //comment 方法用于对 SQL 语句进行注释
//SQL注释
$user = M('User');
var_dump($user->comment('所有用户')->select());

11.join

 //join 方法用于多表的连接查询。
//JOIN多表关联,默认是INNER JOIN
$user = M('User');
var_dump($user->join('think_user ON think_info.id =
think_user.id')->select()); //__USER__和__INFO__代替
//RIGHT、LEFT、FULL
var_dump($user->join('think_user ON think_info.id =
think_user.id','RIGHT')->select());

12.uinon

 //union 方法用于合并多个 SELECT 的结果集
//合并多个SELECT结果集
$user = M('User');
var_dump($user->union("SELECT * FROM think_info")->select());

13.distinct

 //distinct 方法用于返回唯一不同的值
//返回不重复的列
$user = M('User');
var_dump($user->distinct( true)->field('user')->select());

14.cache

 //cache 用于查询缓存操作
//查询缓存,第二次读取缓存内容
$user = M('User');
var_dump($user->cache( true)->select());

15.命名范围

掌握Thinkphp3.2.0----连贯操作的更多相关文章

  1. ThinkPhp 3.2 数据的连贯操作

    ThinkPHP模型基础类提供的连贯操作方法(也有些框架称之为链式操作),可以有效的提高数据存取的代码清晰度和开发效率,并且支持所有的CURD操作. 使用也比较简单, 假如我们现在要查询一个User表 ...

  2. thinkPHP--SQL连贯操作

    一.连贯入门 连贯操作使用起来非常简单,比如查找到 id 为 1,2,3,4 中按照创建时间的倒序的前两 位. //连贯操作入门 $user = M('User'); var_dump($user-& ...

  3. 【转】PHP实现连贯操作

    [第一种方案 __call] 我们在使用一些框架(如ThinkPHP)编码的时候,常用到这样的代码. M('User')->where(array('id'=>1))->field( ...

  4. 一对一关联查询时使用relation连贯操作查询后,调用getLastSql()方法输出的sql语句

    如题: 一对一关联查询时使用relation连贯操作查询后,调用getLastSql()方法输出的sql语句不是一条关联查询语句. 例如: $list = $db->relation(true) ...

  5. Laravel框架数据库CURD操作、连贯操作总结

    这篇文章主要介绍了Laravel框架数据库CURD操作.连贯操作.链式操作总结,本文包含大量数据库操作常用方法,需要的朋友可以参考下 一.Selects 检索表中的所有行 复制代码代码如下: $use ...

  6. 11.ThinkPHP 3.1.2 连贯操作

    ==================================================== 一.常用连贯操作 1.where 帮助我们设置查询条件 2.order 对结果进行排序 $ar ...

  7. ThinkPHP框架模型连贯操作(八)

    原文:ThinkPHP框架模型连贯操作(八) Thinkphp的连贯操作使用起来也是很灵活: *可能这里有的mysql函数没全部罗列出来,大家可以举一反三,形式雷同 一.常用连贯操作 1.where ...

  8. MySQL数据库操作类(PHP实现,支持连贯操作)

    <?php /** * Author: suvan * CreateTime: 2018/2/27 * description: 数据库操作类(仅对接MySQL数据库,主要利用MySQLi函数) ...

  9. Selenium-ActionChainsApi--鼠标连贯操作

    ActionChains UI自动化测试过程中,经常遇到那种,需要鼠标悬浮后,要操作的元素才会出现的这种场景,那么我们就要模拟鼠标悬浮到某一个位置,做一系列的连贯操作,Selenium给我们提供了Ac ...

随机推荐

  1. Lua 基础

    Lua 5.3 的中文手册, http://cloudwu.github.io/lua53doc 在线浏览 --第一部分 -- 两个横线开始单行的注释 --[[ 加上两个[和]表示 多行的注释. -- ...

  2. DES & 3DES 加密算法

    JAVA坑 跟其他公司java的对接口,一个细节对到吐血,具体: DesUtil.java(别人的反例) //package base_class; import java.io.IOExceptio ...

  3. 【GoLang】golang 闭包 closure 参数传递的蹊跷!

    结论: 闭包函数可以直接引用外层代码定义的变量, 但是,注意,闭包函数里面引用的是变量的地址, 当goroutine被调度时,改地址的值才会被传递给goroutine 函数. 介绍 go的闭包是一个很 ...

  4. Gossip算法

    Gossip算法因为Cassandra而名声大噪,Gossip看似简单,但要真正弄清楚其本质远没看起来那么容易.为了寻求Gossip的本质,下面的内容主要参考Gossip的原始论文:<<E ...

  5. LeetCode之237. Delete Node in a Linked List

    ------------------------------------------------ 因为不知道前序是谁,所以只好采用类似于数组实现的列表移动值, 又因为如果当前是最后一个元素了但是已经没 ...

  6. 【转】算法杂货铺——k均值聚类(K-means)

    k均值聚类(K-means) 4.1.摘要 在前面的文章中,介绍了三种常见的分类算法.分类作为一种监督学习方法,要求必须事先明确知道各个类别的信息,并且断言所有待分类项都有一个类别与之对应.但是很多时 ...

  7. JS将指定的时间戳转为UTC时间

    Js中获取时间戳可用var dayMiliseconds = parseInt(new Date().valueOf());Js的时间戳单位为毫秒(1s = 1000 ms),下面是一个将制定的格式转 ...

  8. zoj 3820(2014牡丹江现场赛B题)

    题目链接:http://acm.zju.edu.cn/onlinejudge/showProblem.do?problemId=5374 思路:题目的意思是求树上的两点,使得树上其余的点到其中一个点的 ...

  9. 爱特梅尔ATMEL全系列芯片解密单片机破解

    爱特梅尔ATMEL全系列芯片解密单片机破解 ATMEL芯片介绍: ATMEL公司为全球性的业界领先企业,致力于设计和制造各类微控制器.电容式触摸解决方案.先进逻辑.混合信号.非易失性存储器和射频 (R ...

  10. JAVA中List 排序

    第一种方法,就是list中对象实现Comparable接口,代码如下: public class SortEntity implements Comparable<SortEntity>{ ...