ユーザー モデルにリンクされたお気に入りのモデルがあります。彼の関係は HasMany で行われます。したがって、このように任意のユーザーからすべてのお気に入りを取得できます。
[User] => Array
(
[id] => 60
[username] => username
[email] => xxxxxx@gmail.com
)
[Favorite] => Array
(
[0] => Array
(
[id] => 7
[book_id] => 15
[user_id] => 60
[position] => 1
[created] => 2012-08-08 04:08:54
)
[1] => Array
(
[id] => 6
[book_id] => 17
[user_id] => 60
[position] => 1
[created] => 2012-07-26 04:08:32
)
)
しかし、この Result には、すべての Book データと関連オブジェクトが表示されるわけではありません。そこで ii は、id のリスト ([15,16 ....]) を与える find('all') でそれらを見つけることにしました。唯一の問題は、Favorite.created DESC で私の注文にリンクされていないことです。Books アイテムを別の順序で取得します。
私のクエリは実際には次のようになります。
$result = $this->User->findById($id);
$conditions = array('Book.id' => Set::extract($result, 'Favorite.{n}.book_id'));
$favorites = $this->Book->find('all', array('conditions' => $conditions));
モデルの関係を変更する方法はありますか? またはcakephpでの私のクエリ?