php – Laravel Eloquent toArray不使用方括号
发布时间:2020-12-14 19:42:49 所属栏目:大数据 来源:网络整理
导读:我正在写一个api并尝试将大量结果转换为 JSON.当雄辩的结果转换为数组时,我期待这样的事情: [ { "id": "0",... },{ "id": "",] 但相反,Laravel使用表键将其显示为键值列表: "0":{ { "id": "0",... } },"1":{ { "id": "1",... } } 这是功能: $results = A
我正在写一个api并尝试将大量结果转换为
JSON.当雄辩的结果转换为数组时,我期待这样的事情:
[ { "id": "0",... },{ "id": "",] 但相反,Laravel使用表键将其显示为键值列表: "0":{ { "id": "0",... } },"1":{ { "id": "1",... } } 这是功能: $results = AppEvent::with('sandboxes')->get()->sortBy('start_time')->forPage($pageNum,$perPage); return response()->json(array( "events" => $page,)); 我怎样才能让Laravel给我一个合适的阵列? 解决方法
当您第一次收到活动时,您的收藏品看起来像这样:
[ 0 => Event1,1 => Event2,2 => Event3 ] 这是一个正确索引的数值数组,可以用JSON表示为数组.但是,一旦获得了Collection,就可以在其上调用sortBy(),对Collection中的项进行排序.此排序重新排列数组内的项和键的值.此时,您的收藏可能看起来像: [ 1 => Event2,0 => Event1,2 => Event3 ] 这不是正确索引的数字数组,不能在JSON中表示为数组.此数组必须表示为对象,这是您所看到的. 为了获得您期望的结果,您需要在对其进行排序后重新键入集合中的项目.您可以使用Collection上的values()方法执行此操作(它只调用内部项数组上的array_values()). 一旦你重新修改了你的Collection,它将看起来像: [ 0 => Event2,1 => Event1,2 => Event3 ] 现在这是一个正确索引的数字数组,可以用JSON表示为数组. 所以,你的代码应该类似于: $results = AppEvent::with('sandboxes') ->get() ->sortBy('start_time') ->values() // re-key the items in the collection after sorting ->forPage($pageNum,$perPage); (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |