rest - 根据codeigniter中的id将多行数据分组
问题描述
我在数据库中有这样的表
+---+-------------+--------------+
|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 |
+---+-------------+--------------+
我想根据 service_name 列对所有 doc_id 进行分组
我试过使用
在我的控制器中
$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 和根据该 service_name 的所有 doc_id 进行分组。我在哪里错了?目前我的输出是这样的。
{ "data":
[ { "service_name": "new service", "doc_id": "12" },
{
"service_name": "old service", "doc_id": "13" }
]
}
解决方案
你需要使用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();
推荐阅读
- c++ - 为什么这个应用程序会崩溃?(未处理的异常在 0x52B13499 (ucrtbased.dll))
- python-3.x - 如何使用 PySide2 的 QPropertyAnimation 平滑显示 QProgressBar 值更新?
- c# - 拾取脚本分配变量和更新文本
- c - Doxygen - 记录 X 宏
- node.js - MERN APP - 如何使用上下文 api 在我的反应组件中访问带有 id 的 express 参数
- flutter - RangeError(RangeError(索引):无效值:只有有效值是0:1)
- javascript - 从 Javascript 中的其他两个数组构建一个新数组
- linux - 如何修复 CentOS WebPanel 无法在浏览器中运行但服务已启动并正在运行?
- javascript - 验证括号在字符串中是否正确配对。如果是,打印“有效”,否则打印“无效”(不带引号)
- javascript - 没有问题原因提示的错误 - 'ERROR @wdio/runner: Error'