频道栏目
首页 > 资讯 > ThinkPHP > 正文

ThinkPHP Think定位查询

16-01-07        来源:[db:作者]  
收藏   我要投稿
定位查询

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

getN():取得查询结果中的某个位置的记录
first():取得符合条件的第一条记录
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
文件中定义模型如下:
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) 方法。
相关TAG标签
上一篇:自定义字段的实现方式有什么呢?解决思路
下一篇:php数组函数序列之in_array() 查找数组值是否存在
相关文章
图文推荐

关于我们 | 联系我们 | 广告服务 | 投资合作 | 版权申明 | 在线帮助 | 网站地图 | 作品发布 | Vip技术培训 | 举报中心

版权所有: 红黑联盟--致力于做实用的IT技术学习网站