Php 使用无脂肪框架过滤后,如何检查记录计数?

Php 使用无脂肪框架过滤后,如何检查记录计数?,php,fat-free-framework,Php,Fat Free Framework,我正在使用带cortex ORM插件的无脂肪框架。我正在尝试获取符合特定条件的记录数。我的代码: $group_qry = new \models\system\UserGroup; $group_qry->load(array('type=?',$name)); echo $group_qry->count(); //always returns 3, i.e total number of records in table 起初我认为这可能是因为过滤不起作用,它总是获取所有信息

我正在使用带cortex ORM插件的无脂肪框架。我正在尝试获取符合特定条件的记录数。我的代码:

$group_qry = new \models\system\UserGroup;
$group_qry->load(array('type=?',$name));
echo $group_qry->count(); //always returns 3, i.e total number of records in table
起初我认为这可能是因为过滤不起作用,它总是获取所有信息,但事实并非如此,因为我用

while(!$group_qry->dry()){
    echo '<br/>'.$group_qry->type;
    $group_qry->next();
}
while(!$group\u qry->dry()){
回显“
”。$group\u qry->类型; $group_qry->next(); }

那么,如何获得过滤后实际加载的记录数呢?

是的,这一部分令人困惑:
count()
方法实际上执行一条
SELECT count(*)
语句。它采用与
load()
方法相同的参数,因此在您的情况下:

$group_qry->count(array('type=?',$name));
这并不完全是您所需要的,因为它将执行第二次
选择
,这将降低性能

您需要的是计算结果数组中的行数。由于此数组是受保护的变量,因此需要在
UserGroup
类中为其创建一个专用函数:

class UserGroup extends \DB\SQL\Mapper {
  function countResults() {
    return count($this->query);
  }
}
如果您觉得对于这样一个简单的需求来说有点过分,您可以请求框架来处理它。听起来是个合理的要求

更新:
它现在是框架的一部分。因此,调用
$group\u qry->loaded()
将返回已加载记录的数量。

xfra35是正确的,当使用映射器作为活动记录时,当前没有方法仅返回已加载的项。或者,您可以只计算集合:

$result = $group_qry->find(array('type=?',$name));
echo count($result); // gives you the number of all found results
此外,我刚刚添加了countResults方法,如建议的那样。thx xfra35