2012-09-07 190 views
1

我正在用CakePHP构建一个json Rest api。它工作的很好,除非我似乎无法得到适当的响应结构。CakePHP嵌套模型

我两个表:用户和配置文件。用户拥有一个配置文件。配置文件有一个外键。 型号:Users.php(公共$ hasOne = '资料'),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 ...我似乎无法找到嵌套表的解决方案。任何ide获取配置文件嵌套在用户?

回答

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']); 
+0

感谢您的建议。我发现了一种自动格式化模型中相关阵列的解决方案。它非常适合我的目的(使用iOS的RestKit)。 https://github.com/bravo-kernel/cakephp-restkit – Scott