在Laravel json响应中使用访问器和mutator

时间:2014-02-07 11:52:25

标签: php json angularjs laravel laravel-4

所以我正在制作一个产生json响应而不是View::make('foo', compact('bar'))的API。

使用刀片模板

我的控制器只返回Users的Eloquent模型:

public function index()
{
    return User::all();
}
protected function getFooAttribute()
{
    return 'bar';
}

我的视图将能够使用它,以及foo属性(不是用户表中的字段)。

@foreach($users as $user)
<p>{{$user->name}} {{$user->foo}}</p>
@endforeach

使用Angular JS + json响应

然而,既然我没有使用刀片而是抓住json并使用Angular JS显示它我无法做到这一点:

<p ng-repeat="user in users">{{user.name}} {{user.foo}}</p>

有没有办法干净地打包json响应,以便我有:

[{"name": "John", "foo": "bar"}, ...]

警告:我以前从未构建过API,去年12月我才开始编程/ web开发。这是我的尝试:

public function index()
{
  $response = User::all();
  foreach($response as $r)
  {
    $r->foo = $r->foo;
  }

  return $response;
}

1 个答案:

答案 0 :(得分:18)

是的,例如:

return Response::json([User:all()], 200);

通常你想要更多但是......

return Response::json([
    'error' => false,
    'data' => User:all()
], 200);

200是HTTP状态代码。

要包含指定这些属性所需的属性,以自动附加到模型中的响应中。

protected $appends = array('foo');

public function getFooAttribute()
{
    return 'bar';    
}