データ検索をマスターする! (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 プログラミング入門」に戻る