前提・実現したいこと
cakephp3.7でアソシエーションがうまくできない。
会員テーブルと趣味テーブルの紐づけとして会員趣味テーブルから条件検索をしたいが意外と書き方がgoogle先生にのっていないのでご教授お願いいたします。
DB
Users(会員テーブル)
id
Hobbies(趣味テーブル)
id
name
UsersHobbies(会員趣味テーブル)
id
users_id
hobbies_id
SQLで書くとこんな感じです。
select * from users where id in (select users_id from users_hobbies where hobbies_id in(?,?,?));
条件さえ満たしていればHobbiesもUsersHobbiesのデータは不必要です。
。
発生している問題・エラーメッセージ
エラーメッセージ
該当のソースコード
UsersTable.php $this->hasMany('UsersHobbies', [ 'foreignKey' => 'hobbies_id', ]); UsersController.php $query = $this->Users->find()->contain([ 'UsersHobbies' => function ($q) { return $q->where([ 'UsersHobbies.hobbies_id = 2', ]); } ]); foreach ($querys as $query) { pr($query); }
試したこと
これだとSQLログの結果は
select * from users;
select * from users_hobbies where (hobbies_id in (会員の全ID) and hobbies_id = 2);
補足情報(FW/ツールのバージョンなど)
centos6 php7 mysql5 cakephp3.7
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。