我有三个表:books
,books_categories
和categories
。
books:
...
categories:
id, name, parent_id
books_categories:
id book_id category_id
因此,一本书可能属于许多类别,一个类别可能有很多书。
类别是树 - 每个类别都有父(或NULL
)(实际上是孩子)。
问题是如果我们有类别:a
> b
> c
和图书属于a
类别,它并不意味着它属于子类别b
或c
...我希望从{{1}类别中获取所有图书甚至来自子类别。
现在我从指定类别获得所有书籍:
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));
类别的所有书籍。而且我还需要来自'5'子类别的书籍 - 是否可以在单个查询中?或者我必须得到所有父子类别(如何),然后在条件设置id = '5'
等等?
答案 0 :(得分:1)
试试这个:
$allCategories = $this->Book->find('threaded');