【发布时间】:2012-04-23 14:50:34
【问题描述】:
我有三个表:books、books_categories 和 categories。
books:
...
categories:
id, name, parent_id
books_categories:
id book_id category_id
因此,一本书可能属于多个类别,而一个类别可能包含许多书籍。
类别是一棵树 - 每个类别都有父级(或NULL)(实际上是子级)。
问题是,如果我们有类别:a > b > c 并且 book 属于类别 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' 等等?
【问题讨论】:
标签: sql cakephp cakephp-model