文档章节

ThinkPHP 定位查询

ywppengpeng
 ywppengpeng
发布于 2016/11/21 13:47
字数 554
阅读 10
收藏 1

定位查询

ThinkPHP 支持对数据的定位查询:

  1. getN():取得查询结果中的某个位置的记录
  2. first():取得符合条件的第一条记录
  3. last():取得符合条件的最后一条记录

定位查询是内置于高级模型类(AdvModel)里的方法,是独立的方法且支持连贯操作。如果直接使用M或D实例化模型会提示:

Model:getN您所请求的方法不存在!

因此要使用定位查询需要加载高级模型类,可以有下面两种方法加载高级模型类:

1、使用动态模型切换 switchModel() 方法:

switchModel("Adv")

2、在用户模型里面继承高级模型类:

class UserModel extends AdvModel{ }

getN()

switchModel()

下面是使用 switchModel() 方法定位查询的例子:

public function read(){
    $Dao = M('User');
    $list = $Dao->switchModel('Adv')->where('uid > 0')->order('uid ASC')->getN(2);
    dump($list);
}

上例中用于取得 uid>0 的第3条记录。实际执行的 SQL 如下:

SELECT * FROM user WHERE uid > 0 ORDER BY uid ASC LIMIT 2,1

因此 getN() 中的参数是 LIMIT 中的第一个参数(游标偏移量)。

AdvModel

在 Lib/Model/UserModel.class.php 文件中定义模型如下:

<?php
class UserModel extends AdvModel{

}
?>

由于不需要再模型类实现任何逻辑,因此可以是一个空模型。控制器中代码如下:

public function read(){
    $Dao = D('User');
    $list = $Dao->where('uid > 0')->order('uid ASC')->getN(2);
    dump($list);
}

执行的效果和使用 switchModel() 一致。

first()

first() 方法用于获取符合条件的第一条记录,是高级模型类里面的方法,可以参考 getN() 的用法。

下面是使用 switchModel() 方法定位查询的例子:

public function read(){
    $Dao = M('User');
    $list = $Dao->switchModel('Adv')->where('uid > 10')->order('uid ASC')->first();
}

该方法实际是执行 getN(0) 方法。

last()

last() 方法用于获取符合条件的最后一条记录,是高级模型类里面的方法,可以参考 getN() 的用法。

下面是使用 switchModel() 方法定位查询的例子:

public function read(){
    $Dao = M('User');
    $list = $Dao->switchModel('Adv')->where('uid > 10')->order('uid ASC')->last();
}

该方法实际是执行 getN(-1) 方法。

参考阅读

  1. MySQL 统计查询》系列教程
  2. ThinkPHP Where 条件
  3. ThinkPHP 连贯操作

© 著作权归作者所有

共有 人打赏支持
ywppengpeng
粉丝 5
博文 63
码字总数 32377
作品 0
西安
程序员
私信 提问

暂无文章

看过上百部片子的这个人教你视频标签算法解析

本文由云+社区发表 随着内容时代的来临,多媒体信息,特别是视频信息的分析和理解需求,如图像分类、图像打标签、视频处理等等,变得越发迫切。目前图像分类已经发展了多年,在一定条件下已经...

腾讯云加社区
17分钟前
0
0
2. 红黑树

定义:红黑树(Red-Black Tree,简称R-B Tree),它一种特殊的二叉查找树(Binary Search Tree)。 要理解红黑树,先要了解什么是二叉查找树。在上一章中,我们学习了什么是二叉树,以及二叉树...

火拳-艾斯
18分钟前
0
0
input的button类型,点击页面跳转

一、input type=button 不做任何操作 例如: <input type="button" class="btn btn-primary" style="width: 30%" value="返回" onclick="window.location.href='/users/list'"></input> onc......

Sunki
25分钟前
0
0
踩坑:js 小数运算出现精度问题

背景 在学习小程序商城源码时发现了这个问题,单价可能出现小数,小数之间运算结果会莫名其妙多出一大串数字,比如下面这样👇。 在此之前我是知道 js 中著名的 0.1 + 0.2 != 0.3 的问题的,...

dkvirus
30分钟前
0
0
zookeeper和HBASE总结

zookeeper快速上手 zookeeper的基本功能和应用场景 zookeeper的整体运行机制 zookeeper的数据存储机制 数据存储形式 zookeeper中对用户的数据采用kv形式存储 只是zk有点特别: key:是以路径...

瑞查德-Jack
53分钟前
1
0

没有更多内容

加载失败,请刷新页面

加载更多

返回顶部
顶部