所以我试图设置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');]
有没有其他方法可以做到这一点?
答案 0 :(得分:2)
你做错了。如果您自己对结果进行分页,则首先执行单独的查找('count')查询以获取记录总数,并通过限制知道每页的最大记录数。
CakePHP内置分页功能。阅读本书的这一部分。 http://book.cakephp.org/2.0/en/core-libraries/components/pagination.html在下面的几个段落中有一节介绍如果您尝试这样做的话,可以构建自定义分页方法。