我是laravel 4的新手,我正在尝试按照Apigee定义的最佳实践创建一个rest API。
apigee定义的最佳实践之一是对json属性键使用camel case,这种方式在Javascript中使用API时,相应的对象将遵循属性代码约定(camel case)。
我希望能够在蛇案例之后定义数据表列,但是当通过我的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"
}
有人知道如何解决这个问题吗?
答案 0 :(得分: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() );
答案 1 :(得分: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