如何将Eloquent模型作为JSON返回给浏览器?以下两种方法有什么区别?两者似乎都有效。
#1:
return Response::json($user->toArray());
#2:
return $user->toJson();
答案 0 :(得分:34)
发送的实际数据是相同的,但是......
#1将Content-Type:application/json
发送到浏览器
#2发送Content-Type:text/html
#1更正确,但这取决于您的Javascript,请参阅:What is the correct JSON content type?
但是,返回模型要简单得多。它以JSON自动返回,并且Content-Type设置正确:
return $model;
答案 1 :(得分:10)
在#1中,您首先将您的Eloquent转换为数组,然后将其转换为JSON,这似乎有点多余。
考虑到这一点,如果您将JSON返回给调用者,我将使用#2。
另请注意,在L4中,只要将Eloquent模型强制转换为字符串,它就会自动转换为JSON。因此,您可以在此示例中从文档中直接返回JSON数据:
Route::get('users', function()
{
return User::all();
});
有关详细信息,请参阅http://four.laravel.com/docs/eloquent#converting-to-arrays-or-json
答案 2 :(得分:9)
Response::json($someArray)
是返回JSON数据的通用方法。
return $model->toJson()
特定于将模型作为JSON返回。在使用Eloquent模型时,这将是我的首选方法。
答案 3 :(得分:0)
这解决了我在laravel 5.5中的问题:
function allUsers()
{
$users = \App\User::all();
$usersJson = json_encode($users);
return $usersJson;
}