我有一個網站在cakephp 2.0中開發。 我有一個與hasMany和HABTM產品相關的「產品」表。一個產品可以包含許多產品,該產品可以包含許多產品。我可以有多個級別的產品。 爲了使這個關係我已經使用這個模型(解釋這個問題:cakephp HABTM same model):cakephp使相同的查詢遞歸
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產品在我的產品和如果fin dedproduct包含其他產品我該怎麼做?因爲我不知道我有多少「等級」,所以我可以有1個等級或6個等級的產品。一個產品包含許多產品,這finded產品包含其他產品ecc .. 我該怎麼做,並檢索每個產品的屬性?這是一個遞歸查詢,但問題是我不知道我有多少級別。一些想法?謝謝
但是我必須讓巢連接正確嗎?一個連接內的連接在一個連接內部,直到一個產品裏面沒有產品的權利?但我的問題不是如何進行查詢,而是如何進行遞歸查詢來檢索所有產品,直到產品內部沒有產品爲止 –
正如我寫的,您需要知道SQL來執行如此複雜的查詢。看看這個關於遞歸查詢的問題http://stackoverflow.com/questions/10646833/using-mysql-query-to-traverse-rows-to-make-a-recursive-tree所以,我想,那不是一個選項,所以使用TreeBehavior。也許它會生成多個查詢,但它很容易使用。 – bancer
我知道SQL,我不想用簡單的方法,但最好的和執行方式,因爲我有很多記錄來檢索。我嘗試使用TreeBehavior和連接。我不知道TreeBehavior是否是我的方式 –