【发布时间】:2013-03-14 04:27:46
【问题描述】:
如何将 Eloquent 模型作为 JSON 返回给浏览器?下面两种方法有什么区别?两者似乎都有效。
#1:
return Response::json($user->toArray());
#2:
return $user->toJson();
【问题讨论】:
标签: php json api laravel laravel-4
如何将 Eloquent 模型作为 JSON 返回给浏览器?下面两种方法有什么区别?两者似乎都有效。
#1:
return Response::json($user->toArray());
#2:
return $user->toJson();
【问题讨论】:
标签: php json api laravel laravel-4
实际发送的数据是一样的,但是...
#1 向浏览器发送Content-Type:application/json
#2 发送Content-Type:text/html
#1 更正确,但取决于您的 Javascript,请参阅:What is the correct JSON content type?
但是,仅返回模型要简单得多。它会自动返回为 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
【讨论】:
The Response content must be a string or object implementing __toString(), "boolean" given.
这解决了我在 laravel 5.5 中的问题:
function allUsers()
{
$users = \App\User::all();
$usersJson = json_encode($users);
return $usersJson;
}
【讨论】: