加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 大数据 > 正文

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);

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读