CakePHP嵌套模型

时间:2012-09-07 18:01:07

标签: cakephp nested models

我正在使用CakePHP构建一个json Rest api。它工作得很好,除了我似乎无法获得适当的响应结构。

我有两个表:用户和个人资料。用户拥有一个配置文件。配置文件有一个外键。 模型:Users.php(公共$ hasOne ='Profile'),Profiles.php 控制器:UsersController.php

回复是:

[2] => Array
    (
        [User] => Array
            (
                [id] => 3
                [firstname] => test
                [lastname] => 
                [email] => 
                [password] => 
                [created] => 2012-09-04 16:44:04
                [modified] => 2012-09-04 16:44:04
            )

        [Profile] => Array
            (
                [id] => 
                [skill] => 
                [user_id] => 
            )

    )

我真的希望回复是这样的:

[2] => Array
    (
        [User] => Array
            (
                [id] => 3
                [firstname] => test
                [lastname] => 
                [email] =>
                [Profile] => Array
                      (
                     [id] => 
                     [skill] => 
                     [user_id] => 
                       )
            )


    )

我查看了join(),bind(),containsable ...我似乎无法找到嵌套表的解决方案。任何想法让Profile都嵌套在Users中?

1 个答案:

答案 0 :(得分:1)

Cakephp不会这样做,因为它不是用于管理数据的结构。你必须手动完成。如果您正在使用单个结果(由find('first')给出)尝试这样的事情(我还没有测试过):

$result = $this->User->find('first', array('conditions' => array('User.id' => 1)));
Set::insert($result, 'User.Profile', $result['Profile']);
uset($result['Profile']);