不知道这个到底是算bug还是TP1.0正式版已经不再支持了,反正昨天用了半天发现没法用,自己修改了一下才跑起来。
主要就是那个top函数的使用(其实看源代码应该是经过转义了,不过形式上是函数,就称其为函数好了)
定义了D方法之后,使用top函数,不论参数是怎么样将获取的结果dump出来都是满足条件的所有记录,而不是top后面第一个参数限制的条数~~~~~我很郁闷~虽然可以使用topN这种方法,但是毕竟N本质上是一个参数,写在函数中觉得怪怪的感觉。看了一下关于Model的定义(Model.class.php),发现这么一句话
elseif(strtolower(substr($method,0,3))==’top’){
// 获取前N条记录
$count = substr($method,3);
array_unshift($args,$count);
从240行开始。
就是因为这句话没有经过判断,所以一旦函数形式我写成top这种形式,那么$count的值就为空!所以获取的记录就没有条数限制,就是全部的记录~~~
将其修改成
elseif(strtolower(substr($method,0,3))==’top’){
// 获取前N条记录
if(strlen($method)>3){
$count = substr($method,3);
array_unshift($args,$count);
}
也就是对于top进行一个判断,如果top后面还有内容,则其后面的内容作为$count,并且加载$args的头部进行参数传递,否则$args的值不变~
经过上面的修改,调用$Article->top(5,”,’*',’id ASC’)就可以正确调用前5条记录了。
真的不是什么大的问题,而且topN的方法也是比较方便。之所以会使用top方法,可能是个人习惯问题,毕竟N还是一个需要调用的参数,还是放在top后面的括号中看起来比较舒服。
个人观点
还没有任何评论。