在cakePHP中使用afterFind来确定结果计数是否为0?

时间:2013-06-10 22:15:27

标签: php cakephp model

所以我试图设置cakePHP提供的afterFind函数来确定是否从查询中返回任何结果。

测试调试输出时,这是我收到的:

Warning (2): Invalid argument supplied for foreach() [APP/Model/Form.php, line 70]    

app/Model/Form.php (line 71)
'0'

这种行为看起来很奇怪,因为它告诉我我在foreach循环中提供了无效的争论,但同时它能够确定0是数据库上查询的正确计数。

这是下面的函数,位于我的Form.php模型中。

public function afterFind($results, $primary = true){
     foreach ($results as $key => $val) {
         debug($val[0]['count']);
     }
}

我试图这样做,因为在我的控制器中我试图对结果进行分页,但是如果结果的计数是0那么我想要$ this-> Session-> Setflash();

据我所知,$this->Form->Find()函数可以计算结果的总数。

计数功能不适用于$this->paginate('Form) ex. $this->paginate('count', 'Form');]

有没有其他方法可以做到这一点?

1 个答案:

答案 0 :(得分:2)

你做错了。如果您自己对结果进行分页,则首先执行单独的查找('count')查询以获取记录总数,并通过限制知道每页的最大记录数。

CakePHP内置分页功能。阅读本书的这一部分。 http://book.cakephp.org/2.0/en/core-libraries/components/pagination.html在下面的几个段落中有一节介绍如果您尝试这样做的话,可以构建自定义分页方法。