我想要数据库中当前查询的可用记录数,但不考虑LIMIT。
$this->Orders->find('all')
->where(['order_quantity']=>5)
->LIMIT(5);
让我们考虑一下,我上面的查询中没有50条记录。所以只想要当前查询的可用记录数。我无法使用' count()'因为限制它总是会返回总数没有可用的记录小于或等于5.在cakePHP中是否有任何解决方案。
答案 0 :(得分:2)
This page in the CakePHP 3 book,完全解释了您的问题的答案,包括其工作原理和原因:
返回记录总数
使用单个查询对象,可以获得总数 找到一组条件的行:
$total = $articles->find()->where(['is_active' => true])->count();
count()方法将忽略limit,offset和page子句, 因此以下内容将返回相同的结果:
$total = $articles->find()->where(['is_active' => true])->limit(10)->count();
当您需要知道总结果集大小时,这非常有用 提前,无需构造另一个Query对象。同样, 使用时将忽略所有结果格式和map-reduce例程 count()方法。
注意关于" ...的位将忽略限制,偏移和页面子句"
所以尝试这样的事情:
$data = $articles->find()->where(['is_active' => true])->limit(10);
$count = $data->count();
答案 1 :(得分:0)
我不认为你熟悉find中限制的使用。所以,我建议你研究docs。
查询中的限制意味着即使查询实际上有50个数据,查询也只会显示前5个数据。
因此,为了获取实际数据,您只需要删除限制并在代码中进行一些更改,如下所示:
$this->Orders->find('count')->where(['order_quantity' => 5]);