Группировка данных из нескольких строк в группы по идентификатору в codeigniter - PullRequest
2 голосов
/ 18 октября 2019

У меня есть такая таблица в базе данных

  +---+-------------+--------------+
  |id | service_name| doc_id |org_id|  
  +---+-------------+--------------+
  | 1 | new service | 12     | 119  |
  |   |             |        |      |
  | 2 | new service | 24     | 119  |
  |   |             |        |      |
  | 3 | old service | 13     | 118  |
  |   |             |        |      |
  | 4 | old service | 14     | 118  |
  |   |             |        |      |
  | 5 | new service | 20     | 119  |
  +---+-------------+--------------+

Я хочу сгруппировать все doc_id по столбцу service_name

Я пытался использовать

В моем контроллере

 $where_person['org_id'] = $this->post('org_id');  
 $result_insert = $this->$model_name->fetch_doctor_services($where_person);   

В моей модели

   function fetch_doctor_services($where){
    $this->db->select('service_name,doc_id')->from('services');

    $this->db->group_by('service_name');
    $this->db->where($where);

    return $this->db->get()->result();
}

Но он не выводит данные по желанию, группируя по service_name и всем doc_id в соответствии с этим service_name. где я здесь не так? В настоящее время мой вывод такой:

       { "data":
          [ { "service_name": "new service", "doc_id": "12" }, 
            { 
            "service_name": "old service", "doc_id": "13" } 
                  ] 
                }   

1 Ответ

1 голос
/ 19 октября 2019

Вам нужно использовать GROUP_CONCAT. Ниже приведен код о том, как его использовать

    $this->db->select('service_name, GROUP_CONCAT( doc_id) ')->from('services');
    $this->db->group_by('service_name');
    $this->db->where($where);
    return $this->db->get()->result();
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...