前提・実現したいこと
Accounts (アカウントテーブル)
Managers (管理者テーブル)
Users (利用者テーブル)
というモデルがあり以下のようなリレーションです
Accounts 1対1 Managers
Accounts 1対1 Users
Managers 1対多 Users
※Managers,Usersは仕様上Accountsと1対1にしています
ここである利用者の管理者の氏名を取得するとして
name(氏名)はAccountsに存在するので
FROM Users
JOIN Accounts ON Users.acccount_id = Accounts.id
JOIN Managers ON Users.manager_id = Managers.id
JOIN Accounts AS ManagerAccounts ON Managers.account_id = ManagerAccounts.id
というようなSQLにしたいのですがエラーが出る原因が良くわかりません。
発生している問題・エラーメッセージ
Fatal error: Cannot redeclare class App\Model\Account in /vagrant_data/xxxx/src/Model/Entity/Account.php on line 0
該当のソースコード
PHP
1ManagersTable.php のアソシエーション設定 2 $this->belongsTo('Accounts', [ 3 'foreignKey' => 'account_id', 4 'joinType' => 'INNER' 5 ]); 6 // これを追加しました 7 $this->belongsTo('ManagerAccounts', [ 8 'className' => 'Accounts', 9 'foreignKey' => 'account_id', 10 'joinType' => 'INNER' 11 ]); 12 $this->hasMany('Users', [ 13 'foreignKey' => 'care_manager_id', 14 'dependent' => true, 15 ]); 16 17UserTable.php データ取得メソッド内のContain記述 18 19 $query = $this->find() 20 ->contain([ 21 'Accounts', 22 'Managers' => [ 23 'ManagerAccounts' => [ 24 'fields' => ['ManagerAccounts.name'], 25 ], 26 'fields' => ['Managers.id', 'Managers.account_id'], 27 ], 28 ]) 29 ・ 30 ・ 31 ・
試したこと
cookbookにあるようなclassNameにてモデルを特定、
別名のアソシエーションを設定したのですが、上記のようなエラーになり
他にも設定が必要なのか詳しい方いらっしゃいましたら解説願います。
※実際にビルドされたSQLの内容を見るとしっかりと別名でエイリアスされ
問題なくデータ取得ができるのですが…
補足情報(FW/ツールのバージョンなど)
CAKE PHP 3.6
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
2018/06/30 05:22