DEVELOPERS BLOGデベロッパーズブログ

  1. HOME > 
  2. 加藤 正人のデベロッパーズブログ > 
  3. CakePHP3 のファインダーメソッド

加藤 正人のデベロッパーズブログ

加藤 正人

氏名
加藤 正人
役職
多分SE
血液型
秘密
出没
美味しいもののあるところ
特色
タヒチ大好き。ちょいメタボ。

加藤 正人

2016/12/10

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 

関連エントリー

CakePHP3 のユーザー定義ファインダーのオプション

PHP3 でデバグモードを一旦無効化した後再度有効化するとDebugKit が見つからない

CakePHP3 で JSON 応答のための定番処理

CakePHP3 でタイムゾーン変換

バージョンを指定して CakePHP をインストールする

CakePHP サイトの移転時の注意

CakePHP3 のアソシエーションで、紐づけ用フィールドを指定する

CakePHP3 のコマンドライン実行

CakePHP3 の Virtual Field と accessor (Getter)

CSRF token mismatch

2019/07/04
CSRF token mismatch

CakePHP3 で created と modified に日付が自動付与されない場合のメモ

CakePHP3 で

CakePHP3 の JSON 出力でエラー

CakePHP3 のミューテータで書き換えたデータが保存されない件

CakePHP3.6.2 のタイムスタンプ調整 (XSERVER の場合)

CakePHP3 で DebugKit が表示されない

最新版 composer.phar のインストール

PHP 7.x で CakePHP 3.x を使う

Remi's PHP5.6 と intl モジュール

X2 と CakePHP 3.x

2017/05/23
X2 と CakePHP 3.x

CakePHP3 の便利機能

CakePHP3 と SQLite

2017/02/20
CakePHP3 と SQLite

CakePHP3 でテーブル不使用フォームのバリデーション

CakePHP 3.x の accessor と mutator 【その2】

CakePHP 3.x の accessor と mutator

XSERVER X10 に CakePHP 3.x をインストールする

XSERVER で CakePHP 3.x が Fatal error

CakePHP 3.x インストールメモ

Composer メモ

2015/06/13
Composer メモ