DEVELOPERS BLOGデベロッパーズブログ
- HOME >
- 加藤 正人のデベロッパーズブログ >
- CakePHP3 のファインダーメソッド
加藤 正人のデベロッパーズブログ
- 氏名
- 加藤 正人
- 役職
- 多分SE
- 血液型
- 秘密
- 出没
- 美味しいもののあるところ
- 特色
- タヒチ大好き。ちょいメタボ。
- 2020/12/15
- CakePHP3 のリダイレクトがうまく行かない例
- 2020/11/12
- Apache Bench
- 2020/10/05
- PhpSpreadsheet でExcel ファイルを読み込む (CakePHP3)
CakePHP 3.x では、テーブルに「ファインダー」メソッドを定義できるようになった。
これは、2.x のマジック find に代わる機能で、テーブルクラス内に定義したファインダーメソッドを find() の引数として指定できるようにするものだ。
例えば、会員情報が登録されている Members テーブルから「有効な会員」を検索する場合、ファインダーメソッド findAvailable を MembersTable クラス内に定義しておくことで、find('Available') のように記述できる。
ファインダーメソッドの実態は Cake\ORM\Query オブジェクトに対する where() メソッドの適用であるため、複数のファインダーメソッドを連続して適用することで条件式を AND 結合することができる。
例えば上記の Members テーブルに60歳以上の会員を限定する別のファインダーメソッド findSilverAge を定義してある場合、
$members->find('Available')->find('SilverAge')->...
のようにすることで「有効」かつ「60歳以上」の会員を取り出す処理を簡単に記述できる。
まとめ
ファインダーメソッドを使用することで、次のような効果が期待できる。
- 細かな SQL 文の指定を1か所に隠蔽でき、その結果可読性と保守性を向上させることができる
- 当該テーブルに対する複数の検索で共通使用される絞り込み条件をファインダー化しておくことで再利用可能な絞り込み部品にできる
関連タグ:
CakePHP3
関連エントリー
- 2016/09/10
- CakePHP 3.x の accessor と mutator 【その2】
- 2016/09/03
- CakePHP 3.x の accessor と mutator
- 2015/09/12
- CakePHP 3.x インストールメモ
2020/12/15
2020/11/12
2020/10/05
2020/09/11
2020/08/03