php - 根据codeigniter中的外键从两个表中获取json编码数据

标签 php mysql json codeigniter

我有一个问题要问你,但我还没有找到解决方案,所以我有 2 个表:

类别:

id  category

1   BBA
2   BSCS
3   BEE

子类别:

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

我想从第一个表中加入两个表我想获得类别和类别下我想要所有子类别

我的 Controller 看起来像这样:

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"

      }
    ]
  }
]

最佳答案

你可以使用下面的代码来获取你喜欢的数据。

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

关于php - 根据codeigniter中的外键从两个表中获取json编码数据,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/46730772/

相关文章:

php - 使用 AJAX 编辑数据库条目并返回编辑后的数据

php - 为什么我的 $_Post 似乎只存储最后输入的值?

mysql - 将属性附加到 MySQL 中的 JSON 对象

json - 如何使用 uint8 将 json 解码为 struct

php - 来自 json 对象的快速 PUT API

PHP/MySQL 到 PDO?

mysql - 分组依据 - 覆盖结果中每个组下决定行的默认行为

php - 如何在 PHP 中使用 mySQL WHERE 子句?

json - spring MVC 可以将 JSON 解析为 @RequestParams

php - 如何使用 AWS/nginx/Zend 制作站点到站点 VPN