データ検索をマスターする! (1/6)
作成:2015-10-03 08:54
更新:2015-10-03 09:18
更新:2015-10-03 09:18
■最初と最後、検索数
今回も、引き続き前回作成したfindアクションを使って、データ検索について掘り下げていくことにしましょう。まずは、エンティティの最初・最後を取り出す処理、そしてエンティティ数を得るメソッドについてです。
●最初のエンティティだけを取り出す
●検索された数を調べる
では、これらの利用例を挙げておきましょう(下のリスト)。これは、検索を実行すると、その最初と最後のエンティティのnameと検索されたエンティティ数をメッセージとして表示するサンプルです。「あれ? 最初のエンティティはfirstだけど、最後はやってないぞ?」と思った人。countでエンティティ数がわかれば、offsetで最後のものだけを取り出すのは簡単にできますね?
●最初のエンティティだけを取り出す
《Query》->first();検索された中から最初のエンティティだけを取り出します。通常の検索ではエンティティの配列が偉ますが、このメソッドは1つのエンティティだけなので配列にはなりません。得られたエンティティがそのまま渡されます。
●検索された数を調べる
《Query》->count();検索されたエンティティの数を調べて返すものです。返値は整数値になります。
では、これらの利用例を挙げておきましょう(下のリスト)。これは、検索を実行すると、その最初と最後のエンティティのnameと検索されたエンティティ数をメッセージとして表示するサンプルです。「あれ? 最初のエンティティはfirstだけど、最後はやってないぞ?」と思った人。countでエンティティ数がわかれば、offsetで最後のものだけを取り出すのは簡単にできますね?
(by. SYODA-Tuyano.)
※プログラムリストが表示されない場合
AddBlockなどの広告ブロックツールがONになっていると、プログラムリスト等が表示されない場合があります。これらのツールをOFFにしてみてください。
●プログラム・リスト●
public function find() { $this->set('msg', null); $persons = []; if ($this->request->is('post')) { $find = $this->request->data['find']; $first = $this->Persons->find() ->where(["name like " => '%' . $find . '%']) ->first(); $count = $last = $this->Persons->find() ->where(["name like " => '%' . $find . '%']) ->count(); $last = $this->Persons->find() ->offset($count - 1) ->where(["name like " => '%' . $find . '%']) ->first(); $persons = $this->Persons->find() ->where(["name like " => '%' . $find . '%']); $msg = 'FIRST: "' . $first->name . '", LAST: "' . $last->name . '". (' . $count . ')'; $this->set('msg', $msg); } $this->set('persons', $persons); }
※関連コンテンツ
「初心者のためのCakePHP3 プログラミング入門」に戻る