back

データベース検索の基本 (5/5)

■ダイナミックファインダー

複雑な条件の検索だけでなく、アプリケーションでは「シンプルな検索」も多用されます。特定のフィールドから指定した値のものを探す、というような検索ですね。IDの番号を指定してエンティティを取り出すのは、前に「get」としてやりました。では、それ以外のフィールドから検索するためのものはないのでしょうか?

実は、あります。それは「ダイナミックファインダー(Dynamic Finder)」と呼ばれるものです。これは、モデルを作成すると自動的に生成される、各フィールドからの値の検索に特化されたメソッドです。モデルを作成すると、
findBy○○
このような名前のメソッドがモデルに自動生成されます(○○の部分にはテーブルのフィールド名が入ります)。例えば、personsテーブルでは、id, name, age, mailといったフィールドが用意されていますから、
findById
findByName
findByAge
findByMail
このようなメソッドが自動的に作成されている、というわけです。引数に検索する値を渡して呼び出せば、その値のエンティティが全て取り出せてしまいます。

下に簡単なサンプルを上げておきましょう。findメソッドを以下のように書き換えてみてください。入力フィールドにテキストを書いて送信すると、nameからテキストを検索してエンティティを表示します。ダイナミックファインダーは、ただメソッドを呼び出すだけで非常に使い方も簡単ですので、ここで是非覚えておきましょう。



(by. SYODA-Tuyano.)

※リストが表示されない場合

AddBlockなどの広告ブロックツールがONになっているとリストなどが表示されない場合があります。これらのツールをOFFにしてみてください。

public function find() {
    $this->set('msg', null);
    $persons = [];
    if ($this->request->is('post')) {
        $find = $this->request->data['find'];
        $persons = $this->Persons->findByName($find);
    }
    $this->set('persons', $persons);
}




 

記事のリストに戻る



PC Site G+ mail