使用keyBy的Laravel响应返回对象而不是数组

时间:2015-02-13 18:23:01

标签: php json angularjs rest laravel

我正在开发一个项目,使用laravel设置后端RESTful API,使用angularJS设置前端。 我从我的控制器@index返回简单的all()->toArray(),如下所示:

一个。     return Response::json([ 'val' => myModel::all()->toArray()]);

然后使用角度中的该对象,我可以执行$scope.myArray=response.val之类的操作,最终执行$scope.myArrayBoundToATable.push(newelement)之类的操作。如果它由id密钥生成,那么生成的JSON会更好,所以我将其更改为:

B中。     return Response::json([ 'res' => myModel::all()->keyBy('id')->toArray()]);

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

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

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

1 个答案:

答案 0 :(得分:1)

这是@lukasgieter指出的关联数组。 为了便于在前端使用,只需使用array_values

将关联数组转换为常规数组

这是我的处理方式。

Response::json(['val' => array_values(myModel::all())]);