这是我的情况,我有一个可以属于多个类别的Post模型。我想出了怎么做:
class Post extends AppModel
{
var $hasAndBelongsToMany = array('Category');
}
分类模型:
class Category extends AppModel
{
var $hasAndBelongsToMany = array ('Post');
}
现在,这一切都很好。但我无法弄清楚如何搜索属于某个类别的帖子,例如ID为1的“新闻”用于:
class CategoriesController extends AppController {
function view ($id = 0) {
// doesnt work
$this->Category->Video->find ('all', array('conditions' => array('category_id' => $id));
}
}
我一直试图在Google和CookBook上找到答案,但还没有找到答案。有谁知道如何实现这一目标?
谢谢。
答案 0 :(得分:2)
当您在类别和帖子模型上显示关联,而不是视频时,您正在视频模型上执行查找。假设这是一个拼写错误:
如果你想按照你的说法搜索post_controller.php中“新闻”类别的帖子:
$this->Post->Category->find('all', array('conditions'=>array('Category.name'=>'News')) );
或者在categories_controller.php
中$this->Category->find('all', array('conditions'=>array('Category.name'=>'News')) );
答案 1 :(得分:0)
您可以执行以下操作:
$this->Category->bindModel(array(
'hasOne' => array(
'CategoriesVideo'
),
));
return $this->Video->find('all', array(
'conditions' => array(
'CategoriesVideo.category_id' => $id,
),
),
));
编辑:抱歉,看错了代码。这应该有用。
答案 2 :(得分:0)
您最简单的选择是搜索类别本身,并允许recursive级别还返回相关帖子(或视频,或您正在做的任何事情):
//in the category controller
$this->Category->find('all', array('conditions'=>array('Category.id'=>$id));
有很多选项可用于搜索HABTM数据,但上述内容最简单。
以下是CakePHP书籍中描述查询HABTM关系的不同方法的页面:
http://book.cakephp.org/1.3/view/1044/hasAndBelongsToMany-HABTM