laravel-尝试从获取的集合中删除项目

时间:2019-10-20 10:59:49

标签: php laravel

我需要根据属性(Laravel 5.6)从集合中删除项目。

$leagues = League::all();

foreach($leagues as $i => $L){
  if($L->status == LeagueStatus::HIDDEN){

    $leagues->forget($i); <<<<======== 1st attempt
    unset($leagues[$i]);  <<<<======== 2nd attempt

  }
}

return response()->json($leagues->toArray());

这两种方法都可以正确删除项目,但是会导致响应JSON作为对象出现:

{         <<<<======== ITS OBJECT WITH NUMBERED KEYS, NOT ARRAY
  "0":{
    "id":1,
    "title":"test...

正确的JSON为:

[         <<<<======== NORMAL ARRAY WITH OBJECTS
  {
    "id":1,
    "title":"test...

我做错什么了吗?

2 个答案:

答案 0 :(得分:1)

使用values获取一个新的Collection,并将其键重置为连续的整数:

return response()->json($leagues->values());

Laravel 6.x Docs - Collections - Available Methods - values

答案 1 :(得分:0)

只需替换

return response()->json($leagues->toArray());

return json_decode($leagues);