2017-10-13 16 views
3

に外部キーに基づいて2つのテーブルのJSONエンコードデータを取得します。私はあなたのための質問を持っていると私はこの解決策を見つけていない、だから私は2つのテーブル持ってCodeIgniterの

カテゴリー:

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 

私は、カテゴリを取得したいとカテゴリの下に、私はすべてのsub_category

をしたい最初のテーブルから2つのテーブルに参加したいです

このように私のコントローラの外観:

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 
       ) 
      ))); 

     } 

そして、私のモデルは、このようないくつかのものです:

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; 
      } 
     } 

私の出力は次のようになりました:

{ 
    "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" 
     } 
    ] 
    } 
} 

そして、何私は必要これは次のようなものです:

[ 
    { 
    "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

カテゴリのレコードセットからforループを作成し、それをリターン配列に追加する必要があります。 –

+0

'$ this-> db-> group_by( 'categories.id');を削除すると、すべての行が表示されます。結果をループし、要件に応じて別の配列を作成します –

答えて

0

次のコードを使用して、好きなようにデータを取得できます。

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; 
    } 
関連する問題