2017-10-13 1 views
3

j'ai une question pour vous et je ne l'ai pas trouvé une solution à cela, donc je 2 tables:Obtenir des données encodent JSON à partir de deux tables sur la base de clé étrangère dans CodeIgniter

Catégories:

id category 

1 BBA 
2 BSCS 
3 BEE 

sub_category:

id category_id sub_category_name 
1  1   Accountant 
2  1   Manager 
3  1   Sales 
4  2   Data Adminsitrator 
5  2   Web Developer 
6  3   Airline Pilot 
7  3   Airport Security Screener 
8  3   Aircraft Mechanic 

Je veux joindre deux tables de la première table, je veux obtenir la catégorie et sous catégorie Je veux que tous sub_category

mon regard contrôleur comme ceci:

public function getVehicles() 
    { 
     $result = $this->crud_m->getUserVehicles($data,'vehicle'); 
     return $this->output->set_output(json_encode(array(  
       'status' => 'OK', 
       'statusCode' => '402', 
       'response' => array( 
         'description' => 'Details', 
         'category'=> $result 
       ) 
      ))); 

     } 

Et mon modèle est en quelque comme ceci:

public function getUserVehicles($data) 
     { 
      $this->db->select('*'); 
      $this->db->from('categories');      
      $this->db->join('sub_category','sub_category.category_id=categories.id'); 
      $this->db->group_by('categories.id'); 
      $query = $this->db->get(); 
      $result = $query->result(); 
      if(empty($result)){  
       return '401'; 
       } 
      else{ 

       return $result; 
      } 
     } 

ma sortie est maintenant comme ceci:

{ 
    "status": "OK", 
    "statusCode": "402", 
    "response": { 
    "description": "Details", 
    "category": [ 
     { 
     "id": "1", 
     "category": "BBA", 
     "category_id": "1", 
     "sub_category_name": "Accountant" 
     }, 
     { 
     "id": "4", 
     "category": "BSCS", 
     "category_id": "2", 
     "sub_category_name": "Data Adminsitrator" 
     }, 
     { 
     "id": "6", 
     "category": "BEE", 
     "category_id": "3", 
     "sub_category_name": "Airline Pilot" 
     } 
    ] 
    } 
} 

Et ce que je dois est comme ceci:

[ 
    { 
    "categoryId": "1", 
    "category": "BBA", 
    "subCategory": [ 
     { 
     "subCategoryId": "1", 
     "subCategoryName": "Accountant" 

     }, 
     { 
     "subCategoryId": "2", 
     "subCategoryName": "Manager" 

     }, 
     { 
     "subCategoryId": "3", 
     "subCategoryName": "Sales" 

     } 
    ] 
    }, 
    { 
    "categoryId": "2", 
    "category": "BSCS", 
    "subCategory": [ 
     { 
     "subCategoryId": "4", 
     "subCategoryName": "Data Adminsitrator" 

     }, 
     { 
     "subCategoryId": "5", 
     "subCategoryName": "Web developer" 

     } 
    ] 
    } 
] 
+0

Vous devez avoir une boucle for du jeu d'enregistrements de catégories et l'ajouter dans le tableau de retour. –

+0

supprime '$ this-> db-> group_by ('categories.id');' et alors vous aurez toutes les lignes. Boucle sur le résultat et créer un tableau séparé en fonction de vos besoins –

Répondre

0

vous pouvez utiliser le code suivant pour obtenir des données comme vous le souhaitez.

public function getUserVehicles($data) 
    { 
     $categories = array(); 
     $this->db->select('*'); 
     $this->db->from('categories');      
     $query = $this->db->get(); 
     $result = $query->result(); 
     foreach($result as $r){ 
      $r['subCategory'] = $this->getSubCategory($r['id']); 
      array_push($categories, $r); 
     } 
     if(empty($result)){  
      return '401'; 
     }else{ 
      return $categories; 
     } 
    } 


     public function getSubCategory($cat) 
    { 
     $this->db->select('*'); 
     $this->db->from('sub_category');  
     $this->db->where('id', $cat); 
     $query = $this->db->get(); 
     $result = $query->result(); 
     return $result; 
    }