cakephp和可控制的行为

时间:2012-08-17 16:20:46

标签: php sql json cakephp cakephp-2.1

我有以下json:

{
   "Companies":[
      {
         "CompanyPersonTask":{
            "company_id":"502d1844-3638-44dc-824c-14f02e0cc009",
            "person_id":"2",
            "task_id":"1"
         },
         "Company":{
            "id":"502d1844-3638-44dc-824c-14f02e0cc009",
            "name":"mostro",
            "Office":[
               {
                  "id":"502d1844-b90c-44f5-84c5-14f02e0cc009",
                  "company_id":"502d1844-3638-44dc-824c-14f02e0cc009",
                  "region":"Emilia-Romagna",
                  "city":"Rozzemilia",
                  "address":"-",
                  "phone":"-",
                  "legal_office":true
               }
            ],
            "CompanyPersonTask":[
               {
                  "company_id":"502d1844-3638-44dc-824c-14f02e0cc009",
                  "person_id":"2",
                  "task_id":"1"
               }
            ]
         },
         "Person":{
            "id":"2",
            "first_name":"Carlo",
            "last_name":"Giusti",
            "home_address":"Russi",
            "job_address":null,
            "phone":null,
            "fax":null,
            "mail":null,
            "full_name":"Giusti Carlo",
            "OfficePersonTask":[

            ],
            "CompanyPersonTask":[
               {
                  "company_id":"502d1844-3638-44dc-824c-14f02e0cc009",
                  "person_id":"2",
                  "task_id":"1"
               }
            ]
         },
         "Task":{
            "id":"1",
            "short_name":"Proprietario",
            "full_name":null,
            "info":null,
            "OfficePersonTask":[

            ],
            "CompanyPersonTask":[
               {
                  "company_id":"502d1844-3638-44dc-824c-14f02e0cc009",
                  "person_id":"2",
                  "task_id":"1"
               }
            ]
         }
      }
   ]
}

这是由此方法在CompanyPersonTask模型中创建的:

public function getCompaniesByRegion($region){
    $this->recursive = 2;
    return $this->find('all');   
} 

但我希望我的json格式如下:

{
   "Companies":[
      {
         "Company":{
            "id":"502d1844-3638-44dc-824c-14f02e0cc009",
            "name":"mostro",
            "Office":[
               {
                  "id":"502d1844-b90c-44f5-84c5-14f02e0cc009",
                  "company_id":"502d1844-3638-44dc-824c-14f02e0cc009",
                  "region":"Emilia-Romagna",
                  "city":"Rozzemilia",
                  "address":"-",
                  "phone":"-",
                  "legal_office":true
               }
            ]
         },
         "Person":{
            "id":"2",
            "first_name":"Carlo",
            "last_name":"Giusti",
            "home_address":"Russi",
            "job_address":null,
            "phone":null,
            "fax":null,
            "mail":null,
            "full_name":"Giusti Carlo"
         }
      }
   ]
}

如何修改我的方法?

2 个答案:

答案 0 :(得分:3)

使用包含行为来过滤结果数据。 有关更多说明,请参阅this链接。

答案 1 :(得分:0)

您可以检查cake php中的unbindModel以立即删除关系。这将阻止来自不需要的表的数据。 Check this.

<?php
$this->Model->unbindModel(
    array('associationType' => array('associatedModelClassName'))
);