イーガーロードを使用したクエリビルダでのテーブル結合

containを使用したクエリビルダーの実装に手間がかかったのでメモ

<?php
$query = $this->Patron->find()
            ->select(['Patron.number', 'Patron.id', 'Patron.password', 'Patron.username', 'Patron.email', 'Patron.deleted'])
            //結合するテーブルをcontain
            ->contain(['Children' => [
                //別テーブルのフィールドをselectする場合はfieldsの連想配列内で指定する。テーブル名から指定してあげないといけない
                'fields' => [
                    'Children.id', 'Children.username', 'Children.deleted', 'Children.patron_number'
                ]
            ], 'Children.ChildClass' => [
                'fields' => [
                    'ChildClass.class_name'
                ]
            ]])
            ->where(['Patron.number' => $this->request->getParam('id')]);
        $this->set('accountInfo', $query);
?>