0

我有一个用 cakephp 2.0 开发的网站。我有一个与 hasMany 属性相关的表“产品”,以及与产品相关的 HABTM。一个产品可以包含许多产品,而该产品可以包含许多产品。我可以拥有多个级别的产品。为了建立这种关系,我使用了这个模型(解释为这个问题:cakephp HABTM same model):

class Product extends AppModel {
    public $name = 'Product';
    public $useTable = 'products';
    public $belongsTo = 'User';
    public $actsAs = array('Containable');

        public $hasAndBelongsToMany = array(
        'Ingredient' => array(
            'className' => 'Product',
            'joinTable' => 'ingredients_products',
            'foreignKey' => 'product_id',
            'associationForeignKey' => 'ingredient_id', 
            'unique' => true
        )
    );

} 

我知道如何检索产品示例:我有一个包含其他产品的产品,我使用条件进行查找,并使用它们的属性检索所有数据,如下所示:

$this->set('product',$this->Product->find('all', array(
                    'contain' => array(
                            'Property',
                            'IngredientProduct'
                        ),
                    'conditions' => array('id' => $id)  
                )));

(只是一个例子我不知道的查询是否好取决于许多事情只是一个例子)

但是,如果我在我的产品中找到 3/4 产品,并且如果找到的产品包含其他产品,我该怎么做?因为我不知道我有多少“级别”,所以我可以拥有 1 级或 6 级的产品。一个产品包含许多产品,这个找到的产品包含其他产品等等。我怎样才能做到这一点并为每个产品检索其属性?这是一个递归查询,但问题是我不知道我有多少级别。一些想法?谢谢

4

2 回答 2

1

Containable 不会遍历那么深。我建议您手动解除关联并加入表格。看看这里以查看示例和食谱章节(您需要了解您的情况下的 SQL)。或者您可以按照 Dave 的建议使用TreeBehavior 。

于 2012-10-09T12:20:54.657 回答
0

也许您可以/应该使用类似的东西-所有产品都在“产品”表中,然后您有一个保留整个产品层次结构的树表?

于 2012-10-09T08:27:22.130 回答