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

tif*_*ang 6 php json laravel angularjs laravel-4

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

带刀片模板

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

public function index()
{
    return User::all();
}
protected function getFooAttribute()
{
    return 'bar';
}
Run Code Online (Sandbox Code Playgroud)

我的视图将能够与foo属性(不是用户表中的字段)一起使用它.

@foreach($users as $user)
<p>{{$user->name}} {{$user->foo}}</p>
@endforeach
Run Code Online (Sandbox Code Playgroud)

使用Angular JS + json响应

但是,现在我没有使用刀片而是json使用Angular JS 抓取并显示它我无法做到这一点:

<p ng-repeat="user in users">{{user.name}} {{user.foo}}</p>
Run Code Online (Sandbox Code Playgroud)

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

[{"name": "John", "foo": "bar"}, ...]
Run Code Online (Sandbox Code Playgroud)

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

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

  return $response;
}
Run Code Online (Sandbox Code Playgroud)

Sam*_*amV 21

是的,有例子:

return Response::json([User:all()], 200);
Run Code Online (Sandbox Code Playgroud)

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

return Response::json([
    'error' => false,
    'data' => User:all()
], 200);
Run Code Online (Sandbox Code Playgroud)

200 是HTTP状态代码.

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

protected $appends = array('foo');

public function getFooAttribute()
{
    return 'bar';    
}
Run Code Online (Sandbox Code Playgroud)