ThinkPHP 支持对数据的定位查询,定位查询是内置于高级模型类(AdvModel)里的方法,是独立的方法且支持连贯操作。要使用定位查询需要加载高级模型类,可以有下面两种方法加载高级模型类 ...

ThinkPHP 定位查询

ThinkPHP 支持对数据的定位查询,定位查询是内置于高级模型类(AdvModel)里的方法,是独立的方法且支持连贯操作。要使用定位查询需要加载高级模型类,可以有下面两种方法加载高级模型类 ...

定位查询

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) 方法。

本文属原创,转载请注明原文:http://www.zhimatong.com/jiaocheng/554.html

为保证教程的实用性及扩大知识面覆盖,如果您有相似问题而未解决,可联系在线客服免费技术支持。

内容有用

相关阅读
关键词:

    联系
    顾问

    在线
    客服
    购物车
    账号登录

    没有账号?立即注册

    忘记密码

    登录即同意用户协议没有账号? 立即注册
    账号注册
    我已阅读并同意用户协议
    立即注册
    注册即同意用户协议已有账号? 立即登录
    找回密码

    操作步骤:邮箱验证->设置新密码

    注册即同意用户协议已有账号? 立即登录