cakephp使相同的查询递归

时间:2012-10-09 06:54:03

标签: php cakephp cakephp-2.0 cakephp-appmodel

我在cakephp 2.0中开发了一个网站。 我有一个表“Product”与hasMany属性相关,HABTM与Product相关。产品可以包含许多产品,该产品可以包含许多产品。我可以拥有多层次的产品。 为了建立这种关系,我使用了这个模型(解释为这个问题: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产品,如果findedproduct包含其他产品,我该怎么办呢?因为我不知道我有多少“级别”,所以我可以拥有1级或6级产品。一个产品包含许多产品,这个成品包含其他产品ecc .. 我该怎么做并为每件产品检索其财产?这是一个递归查询,但问题是我不知道我有多少级别。一些想法?谢谢

2 个答案:

答案 0 :(得分:1)

可遏制不会如此深入。我建议取消绑定你的关联并手动连接表。看看here以查看示例和this食谱章节(您需要了解SQL)。或者你可以像Dave建议的那样使用TreeBehavior

答案 1 :(得分:0)

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