2017-10-08 3 views
0

Je veux changer le nom de JSON pour ci-dessous le codeComment renommer le nom du tableau json dans cakephp?

Par exemple

 { 
     "id": 1, 
     "mb_item_list": { 
      "item_name": "Something" 
     } 
    } 

Modifier le code à

{ 
     "id": 1, 
     "name": "Something" 

    } 

Je partage ici le code de contrôleur

if ($this->request->is('get')) { 
    $itemname= $this->request->query('item_name'); 
    $searchitem = $this->MbPriceList->find('all') 
       ->contain(['MbItemList' => function ($q) { 
        return $q->select(['item_name']); 
       }]) 
       ->select(['MbItemList.item_name', 'id']);  
    $this->set([ 
     'response' => $searchitem, 
     '_serialize' => ['response'] 
    ]); 
    } 

Répondre

1

I pense que vous pouvez utiliser fields options finder. Fields nous permet de générer des alias pour les champs de base de données et aide à éviter les tableaux imbriqués:

$searchitem = $this->ModelA->find('all' , [ 
      'fields' => [ 
       'id', 
       'name' => 't1.whatever' 
      ], 
      'join' => [ 
       'table' => 'model_b', 
       'alias' => 't1', 
       'type' => 'INNER', 
       'conditions' => [ 
        't1.id = ModelA.id' 
       ] 
      ] 
     ]) 
    ->toArray(); 

Exemple de sortie généré par cette méthode:

[ 
    { 
     "id":1, 
     "name":"Config" 
    }, 
    { 
     "id":2, 
     "name":"Dashboard" 
    }, 
    { 
     "id":3, 
     "name":"Files" 
    } 
]