CakePHP3 カスタムファインダーを利用する

カスタム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]);