php - 如何在 PHP 中更改从 MySQL 查询返回的数据格式
问题描述
所以,我在 Laravel 工作,我有以下 API GET 路由,它从我的数据库返回一个带有文档及其类别的查询:
Route::get('documents', function() {
return DB::table('documents')
->join('documents_categories','documents_categories.documentCategoryID','=','documents.documentCategoryID')
->select('documentName','documentCategoryName')
->get(); });
它返回按类别排序的所有文档:
{documentName: "Certificación de Licencia", documentCategoryName: "Aeronáutica Civil"}
{documentName: "Horas de Vuelo", documentCategoryName: "Aeronáutica Civil"}
{documentName: "Antecedente Penal", documentCategoryName: "Antecedentes"}
{documentName: "Traslado de Animales y Plantas", documentCategoryName: "Certificado de Sanidad Animal o Vegetal"}
{documentName: "Calidad y Apto para el Consumo Humano", documentCategoryName: "Certificados Comerciales"}
{documentName: "Certificado de Libre Venta", documentCategoryName: "Certificados Comerciales"}
{documentName: "Certificado de Origen", documentCategoryName: "Certificados Comerciales"}
{documentName: "Patente", documentCategoryName: "Certificados Comerciales"}
{documentName: "Registro de Producto", documentCategoryName: "Certificados Comerciales"}
{documentName: "Signos Distintivos", documentCategoryName: "Certificados Comerciales"}
现在,我想要实现的是将文档类别作为 JSON 键返回,并在数组中包含相应的文档。像这样的东西:
[
{
"Civiles":["document1","document2"],
"Antecedentes":["document1","document2"]
}
]
完成它的最佳方法是什么?谢谢大家的帮助!
解决方案
如果您使用 Laravel >=5.3,那么您的查询将返回一个集合
您可以混合使用groupBy()、map()和pluck( ):
Route::get('documents', function () {
return DB::table('documents')
->join('documents_categories', 'documents_categories.documentCategoryID', '=', 'documents.documentCategoryID')
->select('documentName', 'documentCategoryName')
->get()
->groupBy('documentCategoryName')
->map(function ($item) {
return $item->pluck('documentName');
});
});
如果您使用的是 Laravel 5.4,您可以更进一步,并通过更改来使用高阶消息:
->map(function ($item) {
return $item->pluck('documentName');
});
至:
->map->pluck('documentName');
推荐阅读
- c - 如何将 OpenMP 与 PARI/GP 一起使用?
- python - Psycopg2 - 在 where 子句中传递变量
- android - MissingWebViewPackageException:无法加载 WebView 提供程序:未安装 WebView
- r - 用户在 R 中写的平均帖子数
- asp.net - 在 Razor 中使用我自己的类声明和使用变量
- postgresql - 从scrapy中的postgresql中删除花括号数组表示法
- python - 使用迭代和递归的代码简化
- python - 如何限制 Python 中的进程数量以确保导入库的内存安全?
- php - 按“父/子”关系对多维数组进行排序
- css - 没有 javascript 的单个 CSS 剧透