在Laravel 4中将一个Eloquent模型作为JSON返回
你如何将一个Eloquent模型作为JSON返回给浏览器? 以下两种方法有什么区别? 两者似乎工作。
#1:
return Response::json($user->toArray());
#2:
return $user->toJson();
实际发送的数据是一样的,但是…
#1将Content-Type:application/json
发送到浏览器
#2发送Content-Type:text/html
#1更正确,但取决于您的Javascript,请参阅: 什么是正确的JSON内容types?
但是,返回模型要简单得多。 它以JSONforms自动返回,并且Content-Type设置正确:
return $model;
在#1中,您首先将您的Eloquent转换为数组,然后将其转换为JSON,这似乎有点多余。
考虑到这一点,如果你将JSON返回给调用者,我会和#2一起去。
另外请注意,在L4中,每当一个Eloquent模型被转换为一个string时,它将自动转换为JSON。 因此,您可以像本例中那样从文档中直接返回JSON数据:
Route::get('users', function() { return User::all(); });
有关更多信息,请参阅http://four.laravel.com/docs/eloquent#converting-to-arrays-or-json
Response::json($someArray)
是返回JSON数据的通用方法。
return $model->toJson()
特定于将模型作为JSON返回。 使用Eloquent模型时,这将是我首选的方法。