我希望当前查询的数据库中没有可用的记录但没有考虑LIMIT。计数没有记录返回,没有考虑极限cakePHP 3
$this->Orders->find('all')
->where(['order_quantity']=>5)
->LIMIT(5);
让我们考虑一下,我有50个这样的查询没有记录。所以只需要当前查询可用的记录数量。我不能使用'count()',因为它会一直返回总数no可用记录小于或等于5. CakePHP中是否有任何解决方案。
我希望当前查询的数据库中没有可用的记录但没有考虑LIMIT。计数没有记录返回,没有考虑极限cakePHP 3
$this->Orders->find('all')
->where(['order_quantity']=>5)
->LIMIT(5);
让我们考虑一下,我有50个这样的查询没有记录。所以只需要当前查询可用的记录数量。我不能使用'count()',因为它会一直返回总数no可用记录小于或等于5. CakePHP中是否有任何解决方案。
This page in the CakePHP 3 book,正好说明了回答你的问题,包括如何和为什么它的工作原理:
返回的记录
的总数使用单一的查询对象,它是POSS IBLE以获得找到的一组条件的行的总数 :
$total = $articles->find()->where(['is_active' => true])->count();
计数()方法将忽略限制,偏移和页条款, 因而下面将返回相同的结果:
$total = $articles->find()->where(['is_active' => true])->limit(10)->count();
当您需要知道 advance中的总结果集大小而无需构造另一个Query对象时,这非常有用。同样,使用 count()方法时,将忽略所有结果格式和map-reduce例程。
通知关于“......会忽略限制,偏移量和页面条款”
所以尝试这样的位:
$data = $articles->find()->where(['is_active' => true])->limit(10);
$count = $data->count();
我也可以调用$ total的count()来获得相同的结果。实际上,我希望当前查询没有可用的记录。考虑当前查询有50个结果,我想在每个页面中显示5条记录,并且我想要显示用户“这是总共50个中的5个”。希望你能明白我的观点。 @ Rik.esh –
我相信我所提供的(从书中)完全符合你的要求,现在正在解释。 – Dave
谢谢,@Dave。它只返回count,但我想count和result_rows,所以这可能吗? –
我不认为你熟悉在find中使用限制。所以,我建议你学习docs。
查询中的限制意味着即使查询实际上有50个数据,查询也只会显示前5个数据。
因此,为了获得实际的数据,你只需要删除该限制,并在你的代码中的一些变化如下:
$this->Orders->find('count')->where(['order_quantity' => 5]);
我只想从50个记录中找到5条记录,但我想向用户显示这是“50条记录匹配,仅显示5条”。 @Dave –
我认为你还没有真正尝试它? [** Counting **](https://book.cakephp.org/3.0/en/orm/query-builder.html#returning-the-total-count-of-records)会忽略限制,偏移等,并且查询对象保持可用,因为内部计数使用查询的副本。 – ndm