我有三个表:books、books_categories和categories。
books:
...
categories:
id, name, parent_id
books_categories:
id book_id category_id因此,一本书可能在多个类别中,一个类别可能有多本书。类别是一棵树--每个类别都有父目录(或NULL) (以及虚拟的子目录)。问题是,如果我们有类别:a > b > c,而图书属于类别a,这并不意味着它属于子类别b或c……我想要获取a类别的所有图书,甚至是子类别的图书。
现在,我从指定类别中获取所有图书,如下所示:
$options['joins'] = array(
array('table' => 'books_categories',
'alias' => 'BookCategory',
'type' => 'inner',
'conditions' => array('Book.id = BookCategory.book_id')
),
array('table' => 'categories',
'alias' => 'Category',
'type' => 'inner',
'conditions' => array('BookCategory.category_id = Category.id')
));
$options['conditions'] = array('Category.id' => '5');
$this->set('books', $this->Book->find('all', $options));这会正确地找到id = '5'类别中的所有图书。我还需要从子类别'5‘的书籍-是否可以在单一查询?或者我必须获取所有的父子类别(如何),然后在条件中设置'Category.id' => '5' OR 'Category.id => '6',等等?
发布于 2012-04-24 00:07:43
试试这个:
$allCategories = $this->Book->find('threaded');https://stackoverflow.com/questions/10282867
复制相似问题