我在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 .. 我该怎么做并为每件产品检索其财产?这是一个递归查询,但问题是我不知道我有多少级别。一些想法?谢谢
答案 0 :(得分:1)
可遏制不会如此深入。我建议取消绑定你的关联并手动连接表。看看here以查看示例和this食谱章节(您需要了解SQL)。或者你可以像Dave建议的那样使用TreeBehavior。
答案 1 :(得分:0)
也许您可以/应该使用类似的东西 - 所有产品都在“产品”表中,然后您有一个树表来保持整个产品层次结构?