2011-11-30 49 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