【发布时间】:2016-08-19 08:52:41
【问题描述】:
我在我的 Laravel API 中生成了一组类别和子类别,用于我的客户端应用程序。
我通过使用集合的filter 和map 方法来组织从数据库中提取的数据:
// get the data from the category table
$categoryData = $categories->all()->categories();
// filter the data by category names we know we want and create the multi-dimensional array of the fields we need
$categoryList = $categoryData->filter(function ($value) {
return $value['Category'] == "by Area of Interest" || $value['Category'] == "by Grade Level";
})
->map(function ($value) {
return ['category' => $value['Category'], 'subCategory' => $value['Subcategory']];
});
dd($categoryList);
当我查看 die 和 dump 结果时,我得到了包含正确格式项目数组的集合:
如果我将它作为数组输出:
dd($categoryList->toArray());
我看到了我期望的多维数组。
我遇到的问题是当我尝试将其输出为 json 以供我的客户端应用程序使用时。
dd($categoryList->toJson());
如果我输出为 json,我会得到一个对象,其中包含 php 数组索引作为属性,以及 php 子数组作为分配给这些属性的对象。
我想要的是一个包含对象数组的 json 对象。例如
$categoryList = [['category' => 'test', 'subCategory' => 'test'], ['category' => 'test', 'subCategory' => 'test']];
dd(json_encode($categoryList));
哪些输出:
我的收款电话有什么问题吗?
更新
根据 Hognbin 的评论:
对$categories->all()->categories(); 的调用会返回一个类别数据集合,然后我会对其进行操作以获取我的列表。
$categoryData = $categories->all()->categories();
dd($categoryData);
产量:
【问题讨论】:
-
我认为问题出在$categories->all()->categories(),你能显示categories()的代码吗?
-
我更新了我的帖子。我没有从 categories 方法中添加代码,因为虽然它的输出与问题相关,但它的代码不是;输出是我正在使用的起始数据。
-
你已经尝试过这样的事情: $return = $categoryList->toArray() return Response::json($return, 200, [], JSON_NUMERICK_CHECK);
-
@HongbinWang,类似,但不同,因为这个专门围绕 laravel 的 Collection 类。
标签: php json laravel functional-programming laravel-5.2