我希望當前查詢的數據庫中沒有可用的記錄但沒有考慮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