データベース検索の基本 (4/5)
作成:2015-09-26 10:26
更新:2015-09-26 10:26
更新:2015-09-26 10:26
■limitとoffset
findによる検索は、特に指定をしなければ、検索されたエンティティすべてが返されます。が、多量のデータを扱うようになると、「全部まとめて取り出す」というのが大変になってきます。必要に応じて、必要な部分のデータだけを取り出す、という方法を覚えておかないといけません。
これを行うのが「offset」と「limit」です。これらについて簡単にまとめましょう。
●「○○番目」からデータを取り出す「offset」
●指定した数だけデータを取り出す「limit」
では、先ほどのサンプルを書き換えて、修正意してみましょう。
では、利用例を下にあげておきましょう。例によってフィールドに検索テキストを書いて送信すると、「Find Persons」のタイトルの下に「○○is first data.」というように最初のデータのnameを表示します。そして下のテーブルには、2番目以降のデータを最大3つまで表示します。
これを行うのが「offset」と「limit」です。これらについて簡単にまとめましょう。
●「○○番目」からデータを取り出す「offset」
《Query》->offset( 整数 );
検索したデータの最初からではなく、指定した位置からデータを取り出すためのものです。引数に、取り出す位置を示す値を渡すことで、その場所からデータを取り出します。この場所を示す値は、一番最初が「ゼロ」、2番目が1,3番目が2となります。「10番目のものから取り出したい」というなら、引数は「9」になります。●指定した数だけデータを取り出す「limit」
《Query》->limit( 整数 );
取り出すデータの数を引数で指定します。引数を「10」とすれば、10個のデータを取り出します。ただし、これは「最大数」と考えて下さい。例えば、取り出すデータ全体が5つしかなければ、limit(10)と指定しても得られるデータは5つだけです。では、先ほどのサンプルを書き換えて、修正意してみましょう。
では、利用例を下にあげておきましょう。例によってフィールドに検索テキストを書いて送信すると、「Find Persons」のタイトルの下に「○○is first data.」というように最初のデータのnameを表示します。そして下のテーブルには、2番目以降のデータを最大3つまで表示します。
(by. SYODA-Tuyano.)
※プログラムリストが表示されない場合
AddBlockなどの広告ブロックツールがONになっていると、プログラムリスト等が表示されない場合があります。これらのツールをOFFにしてみてください。
●プログラム・リスト●
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 | public function find() { $this ->set( 'msg' , null); if ( $this ->request->is( 'post' )) { $find = $this ->request->data[ 'find' ]; $first = $this ->Persons->find() ->limit(1) ->where([ "name like " => '%' . $find . '%' ]); $persons = $this ->Persons->find() ->offset(1) ->limit(3) ->where([ "name like " => '%' . $find . '%' ]); $this ->set( 'msg' , $first ->first()->name . ' is first data.' ); } else { $persons = []; } $this ->set( 'persons' , $persons ); } |
※関連コンテンツ
「初心者のためのCakePHP3 プログラミング入門」に戻る