蛋糕php树模型连接表

时间:2012-04-23 14:50:34

标签: sql cakephp cakephp-appmodel

我有三个表:booksbooks_categoriescategories

books:
   ...

categories:
    id, name, parent_id

books_categories:
    id book_id category_id

因此,一本书可能属于许多类别,一个类别可能有很多书。 类别是树 - 每个类别都有父(或NULL)(实际上是孩子)。 问题是如果我们有类别:a> b> c和图书属于a类别,它并不意味着它属于子类别bc ...我希望从{{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'等等?

1 个答案:

答案 0 :(得分:1)

试试这个:

$allCategories = $this->Book->find('threaded');