【问题标题】:cake php tree model join tables蛋糕php树模型连接表
【发布时间】:2012-04-23 14:50:34
【问题描述】:

我有三个表:booksbooks_categoriescategories

books:
   ...

categories:
    id, name, parent_id

books_categories:
    id book_id category_id

因此,一本书可能属于多个类别,而一个类别可能包含许多书籍。 类别是一棵树 - 每个类别都有父级(或NULL)(实际上是子级)。 问题是,如果我们有类别:a > b > c 并且 book 属于类别 a,这并不意味着它属于子类别 bc... 我想要从类别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


    【解决方案1】:

    试试这个:

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

    【讨论】:

    猜你喜欢
    • 2014-06-15
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2015-05-04
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多