我有一个与我的用户模型链接的收藏模型 . 他和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
)
)
但是这个结果并没有向我展示所有Book数据和相关对象 . 所以我决定用一个find('all')找到它们列出id([15,16 ....]) . 唯一的问题是它没有链接到我在Favorite.created DESC上的订单 . 它以另一种顺序检索我的图书项目 .
我的查询实际上看起来像:
$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的查询?
1 回答
您需要在图书模型和收藏模型之间创建连接 . 在您的情况下,您可以使用BindModel来创建Join . 在我的例子中,我使用了'hasOne',因为Cakephp不会使用hasMne和只有hasOne和BelongsTo连接 .
就这样 .