带有 keyBy 的 Laravel 响应返回对象和数组

Anf*_*ipe 6 php rest json laravel angularjs

我正在开发一个项目,使用 Laravel 设置后端 RESTful API,使用 angularJS 设置前端。我从我的 controller@index 返回的很简单,all()->toArray()就像这样:

一种。

return Response::json([
    'val' => myModel::all()->toArray()
]);
Run Code Online (Sandbox Code Playgroud)

然后使用 angular 的那个对象,我可以做类似的事情$scope.myArray=response.val,最终像$scope.myArrayBoundToATable.push(newelement). 生成的 JSON 会更好,如果它是由它的键,id所以我把它改成:

B.

return Response::json([
    'res' => myModel::all()->keyBy('id')->toArray()
]);
Run Code Online (Sandbox Code Playgroud)

但是现在所有的函数都像.splice.push抛出错误。通过登录到控制台,我可以看到:使用all()->toArray()[Object]一切正常。与keyBy('id')->toArray()Object {1: Object}

我必须将 CRUD 操作重写$scope.myVar为 JS 对象,而不是数组。

我可以使用方法A和迭代每一个元素来搜索ID,但方法B.允许我访问的元素在一个更优雅的方式:$scope.myVar(ID)

Ade*_*nde 2

正如 @lukasgieter 指出的那样,这是一个关联数组。为了便于前端使用,只需使用以下命令将关联数组转换为常规数组即可array_values

这是我的处理方法。

Response::json(['val' => array_values(myModel::all())]);
Run Code Online (Sandbox Code Playgroud)