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

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

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

加藤 正人

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

PhpSpreadsheet でExcel ファイルを読み込む (CakePHP3)

2016/12/10

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 

関連エントリー