1
我有兩個表格設置爲使用樹行爲,製造商和類別。CakePHP,如何在給定父類別時找到與子類別相關的所有產品?
產品只能屬於一個類別,只有一個製造商,但一些製造商(孩子)是由其他廠家(父母)所擁有,同樣某些類別(孩子)是另一個(父)的子類別。
我要做到以下幾點:
給出一個類別ID(父),發現在給定的製造商ID(父)子類別 所有產品,找到孩子製造商的所有產品
我曾嘗試以下內容(產品控制器):
$conditions['Product.category_id'] = $this->Product->Category->children($id,false,'id');
$this->paginate = array(
'conditions' => $conditions,
'limit' => 21
);
$products = $this->paginate('Product');
$this->set(compact('products'));
,但它給了我這樣的:
WHERE `Product`.`category_id` IN (Array, Array, Array, Array, Array, Array)
如果我做了一個print_r,我可以看到它抓取了我需要的信息(見下面),但是我怎麼才能做到這一點,是否有更好的方法來做到這一點?
Array
(
[Product.category_id] => Array
(
[0] => Array
(
[Category] => Array
(
[id] => 11
)
)
[1] => Array
(
[Category] => Array
(
[id] => 12
)
)
[2] => Array
(
[Category] => Array
(
[id] => 23
)
)
[3] => Array
(
[Category] => Array
(
[id] => 24
)
)
[4] => Array
(
[Category] => Array
(
[id] => 25
)
)
[5] => Array
(
[Category] => Array
(
[id] => 26
)
)
)
)
感謝thaJeztah,這絕對是我所期待的。在獲得與兒童類別相關的產品時,這是否是最佳做法?或者,還有更好的方法?我有一種感覺,我會經常使用它,並且希望確保我以正確的方式進行操作。 – CertifiedGeek 2013-03-25 19:14:13
我認爲這是一個不錯的方法。爲了使其更加可重用,最好在模型上創建一個方法,例如'產品:: findProductsInCategory($的categoryId)'。爲了提高性能,緩存總是一個選項,但是從在數據庫中創建正確的索引開始。 – thaJeztah 2013-03-25 19:20:26
是有道理的,謝謝你,我感謝你的幫助! – CertifiedGeek 2013-03-25 19:59:49