使用CakePHP中的递归模型属性

时间:2011-11-30 02:43:31

标签: cakephp relationships

我正在使用CakePHP 2.0和MySQL。我有以下表格:

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
        )
    )
)

无论如何都要控制它检索的内容?基本上,我想要奥特莱斯,相关的郊区数据和相关的州数据。

或者我错误地解决了这个问题?我想到的另一个选项是实现ad hoc连接。

1 个答案:

答案 0 :(得分:4)

在处理相关模型时,请说modelAmodelB,如果要将find()modelA一起使用,则应设置recursive属性该模型,而不是modelB

因此,在您的代码中,您应该像这样设置:

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

您还可以使用find()或{{1}}方法的Containable behavior更多地控制检索内容。