5

我是 laravel 4 的新手,我正在尝试按照 Apigee 定义的最佳实践创建一个 rest API。

apigee 定义的最佳实践之一是对 json 属性键使用驼峰式大小写,这样在 Javascript 中使用 API 时,相应的对象将遵循属性代码约定(驼峰式大小写)。

我希望能够在蛇案例之后定义数据表列,但是当通过我的 api 检索雄辩的对象时,相应的 JSON 必须遵循驼峰案例。

我读到了一个静态变量 $snakeAttributes 可以在模型类中设置,它的文档说“指示属性是否在数组上是蛇形大小写的”。我试图覆盖这个变量并将其设置为 false(MyResource 类),但是在执行以下代码时,json 仍然出现在蛇案例中:

代码:

   $resource = MyResource::find($id);
   return Response::json($resource);

JSON:

{ 
first_name: 'Michael', 
created_at: "2013-10-24 15:30:01",
updated_at: "2013-10-24 15:30:01"
}

有人知道如何解决这个问题吗?

4

2 回答 2

13

创建 BaseModel 和一个新方法来帮助你:

class BaseModel extends \Eloquent {

    public function toArrayCamel()
    {
        $array = $this->toArray();

        foreach($array as $key => $value)
        {
            $return[camel_case($key)] = $value;
        }

        return $return;
    }

}

您的型号:

class MyResource extends BaseModel {
}

然后使用它:

$resource = MyResource::find($id);
return Response::json( $resource->toArrayCamel() );
于 2013-10-24T17:03:21.720 回答
0

我看到的方式,你必须创建一个数组,手动处理键(驼峰式),然后在 JSON 上转换数组(不是结果)。

$resource = MyResource::find($id);  
$array = array();

foreach($resource as $key => $value) {
    $key = str_replace('_', '-', $key);
    $array[$key] = $value;
}
return Response::json($array);

我想这将完成这项工作。:D

于 2013-10-24T16:32:32.473 回答