【问题标题】:CakePHP nested modelsCakePHP 嵌套模型
【发布时间】:2012-09-07 18:01:06
【问题描述】:

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

我有两个表:Users 和 Profiles。用户有一个配置文件。 Profiles 有一个外键。 模型:Users.php (with public $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()、containable...我似乎找不到嵌套表的解决方案。有什么方法可以让 Profile 嵌套在用户中?

【问题讨论】:

    标签: cakephp nested models


    【解决方案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']);
    

    【讨论】:

    • 感谢您的建议。我找到了一个解决方案,可以自动格式化模型中的关联数组。它非常适合我的目的(使用 RestKit for iOS)。 github.com/bravo-kernel/cakephp-restkit
    猜你喜欢
    • 2011-10-22
    • 1970-01-01
    • 2017-07-06
    • 1970-01-01
    • 2014-07-24
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多