如何将 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 内容类型?
但是,仅返回模型要简单得多。它会自动返回为 JSON,并且 Content-Type 设置正确:
return $model;
Response::json($someArray)
是返回 JSON 数据的通用方式。
return $model->toJson()
特定于将模型返回为 JSON。在使用 Eloquent 模型时,这将是我的首选方法。
在 #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
这解决了我在 laravel 5.5 中的问题:
function allUsers()
{
$users = \App\User::all();
$usersJson = json_encode($users);
return $usersJson;
}