カスタムFinderメソッド
find関数はallやlistといったファインダーを引数に指定することが出来ますが、独自のfinderメソッドを実装することも可能です。共通で使うクエリがある場合はカスタムfinderメソッドを登録することでより洗練されたコードを書くことが出来るでしょう。finderメソッドの命名法は簡単です。作りたいファインダーの名前を find に続けた名前の関数を定義しましょう。 hoge というファインダーをつくりたいなら findHoge といったような名前にします。Usersテーブルに対してGroupByIdファインダーを使いたければUsersテーブルでfindGroupByIdを定義します。
use Cake\ORM\Query; use Cake\ORM\Table; //この2つのファイルは最低必要 class ArticlesTable extends Table { public function findGroupById(Query $query, array $options) { return $query->where(['id' => $options['group_id']]); } }
そしてつかいたいときは引数にファインダーの名前をいれるだけです。
$articles = TableRegistry::getTableLocator()->get('Users'); $query = $articles->find('groupById', ['group_id' => $group_id]);