2011-11-30 29 views
1

我正在使用CakePHP 2.0和MySQL。我有以下表格:在CakePHP中使用遞歸模型屬性

Stores 
-id 
-name 
-suburb_id 

Outlets 
-id 
-name 
-suburb_id 

Suburbs 
-id 
-name 
-state_id 

States 
-id 
-code 
-name 

各州有許多郊區和郊區有許多商店。當我執行以下查找時:

$this->Outlet->recursive = 0; 
$stores = $this->Store->find("all", array('limit' => 50)); 

它檢索Outlet,Suburb,Store和State數據數組。

[Outlet] => Array 
(
    [id] => 3 
    [name] => SMOKEYS KEBABS PIZZA /PIDE 
    [suburb_id] => 1212 
) 
[Suburb] => Array 
(
    [id] => 1212 
    [state_id] => 1 
    [name] => Wiangaree 
    [State] => Array 
    (
     [id] => 1 
     [code] => ACT 
     [name] => Australian Capital Territory 
    ) 
    [Store] => Array 
    (
     [0] => Array 
     (
      [id] => 12814 
      [name] => Wiangaree General Store 
      [suburb_id] => 1212 
     ) 
    ) 
) 

是否有反正它控制它檢索?本質上,我希望奧特萊斯,相關的郊區數據和相關的國家數據。

或者我不正確地解決這個問題?我想到的另一種選擇是實施臨時聯接。

+0

你是Outlet or Store模型嗎?因爲你似乎使用/訪問這兩個...你shoudnt – mark

+0

我正在寫應用程序/供應商/炮彈內的控制檯腳本。它使用Store和Outlet。 – CrocHunter

回答

4

當與相關的模型打交道,說modelAmodelB,如果你想使用find()modelA,你應該設置recursive財產在該模型中,而不是在modelB

因此,在你的代碼,你應該設置這樣的:

$this->Store->recursive = 0; 
$stores = $this->Store->find("all", array('limit' => 50)); 

您還可以在什麼是使用取回更多的控制Containable behaviorfind()方法的fields option