LIMITを考慮せずに、現在のクエリのデータベースで使用可能なレコードの数を欲しいです。制限なしcakePHP 3
私は、上記のクエリでは50レコードありません。だから、現在のクエリで利用可能なレコードがないようにしてください。私は 'count()'を使用することはできません。なぜなら、常に利用可能なレコードの総数が5以下であるからです。cakePHPには解決策がありますか?
LIMITを考慮せずに、現在のクエリのデータベースで使用可能なレコードの数を欲しいです。制限なしcakePHP 3
私は、上記のクエリでは50レコードありません。だから、現在のクエリで利用可能なレコードがないようにしてください。私は 'count()'を使用することはできません。なぜなら、常に利用可能なレコードの総数が5以下であるからです。cakePHPには解決策がありますか?
This page in the CakePHP 3 bookは、方法など、あなたの質問に正確に答えを説明し、なぜそれが動作します:
は、単一のクエリオブジェクトを使用してレコード
の総数を返す、それがPOSSです
:カウント()メソッドは、以下が同じ結果を返す、したがって、制限を無視オフセットとページ句、 う$total = $articles->find()->where(['is_active' => true])->count();
:条件のセットのために見つかった行の総数 を得ることがible
$total = $articles->find()->where(['is_active' => true])->limit(10)->count();
これは、 の合計結果セットサイズを事前に知る必要がある場合に便利です。別のQueryオブジェクトを構築する必要はありません。同様に、 count()メソッドを使用すると、すべての結果の書式設定とmap-reduceルーチンは無視されます。
お知らせ
だから、このような何かしてみてください「...制限、オフセットを無視し、ページ句う」について少し:私はあなたが実際に試したことがないことを前提としてい
$data = $articles->find()->where(['is_active' => true])->limit(10);
$count = $data->count();
同じ結果を得るために、$ totalのcount()を呼び出すこともできます。実際には、現在のクエリでレコードの数を使用できないようにします。現在のクエリでは50件の結果があり、各ページに5つのレコードを表示したいとします。「これは合計50件です」というユーザーを表示します。あなたは私のポイントを得ることを願っています。 @ Rik.esh –
私は(本から)提供したものが、あなたが尋ねたことを正確に行い、今度は再び説明していると信じています。 – Dave
ありがとう、@デイブ。カウントだけを返していますが、countとresult_rowsが必要です。これは可能ですか? –
私はあなたがfindの制限の使用に精通しているとは思わない。ですから、docsを勉強することをお勧めします。
クエリの制限は、クエリが実際に50個のデータを持っていても最初の5つのデータのみを表示することを意味します。だから、
、実際のデータを得るために、あなただけの制限を削除し、次のようにあなたのコード内のいくつかの変更を行う必要があります。
$this->Orders->find('count')->where(['order_quantity' => 5]);
私は50からの5つのレコードだけを欲しがっていますが、これは「50レコードが一致して、5つしか表示されていません」というユーザを表示したいと思います。 @Dave –
をそれ? [**カウント**](https://book.cakephp.org/3.0/en/orm/query-builder.html#returning-the- total-count-of-records)は、制限、オフセットなどを無視します。カウントは内部的にクエリのコピーを使用するため、クエリオブジェクトは使用可能なままです。 – ndm