2017-03-06 62 views
0

我希望當前查詢的數據庫中沒有可用的記錄但沒有考慮LIMIT。計數沒有記錄返回,沒有考慮極限cakePHP 3

$this->Orders->find('all') 
      ->where(['order_quantity']=>5) 
      ->LIMIT(5); 

讓我們考慮一下,我有50個這樣的查詢沒有記錄。所以只需要當前查詢可用的記錄數量。我不能使用'count()',因爲它會一直返回總數no可用記錄小於或等於5. CakePHP中是否有任何解決方案。

+0

我認爲你還沒有真正嘗試它? [** Counting **](https://book.cakephp.org/3.0/en/orm/query-builder.html#returning-the-total-count-of-records)會忽略限制,偏移等,並且查詢對象保持可用,因爲內部計數使用查詢的副本。 – ndm

回答

2

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(); 
+0

我也可以調用$ total的count()來獲得相同的結果。實際上,我希望當前查詢沒有可用的記錄。考慮當前查詢有50個結果,我想在每個頁面中顯示5條記錄,並且我想要顯示用戶「這是總共50箇中的5個」。希望你能明白我的觀點。 @ Rik.esh –

+0

我相信我所提供的(從書中)完全符合你的要求,現在正在解釋。 – Dave

+0

謝謝,@Dave。它只返回count,但我想count和result_rows,所以這可能嗎? –

0

我不認爲你熟悉在find中使用限制。所以,我建議你學習docs

查詢中的限制意味着即使查詢實際上有50個數據,查詢也只會顯示前5個數據。

因此,爲了獲得實際的數據,你只需要刪除該限制,並在你的代碼中的一些變化如下:

$this->Orders->find('count')->where(['order_quantity' => 5]); 
+0

我只想從50個記錄中找到5條記錄,但我想向用戶顯示這是「50條記錄匹配,僅顯示5條」。 @Dave –