38

如何将 Eloquent 模型作为 JSON 返回给浏览器?下面两种方法有什么区别?两者似乎都有效。

#1:

return Response::json($user->toArray());

#2:

return $user->toJson();
4

4 回答 4

34

实际发送的数据是一样的,但是...

#1 发送Content-Type:application/json到浏览器

#2 发送Content-Type:text/html

#1 更正确,但这取决于您的 Javascript,请参阅:什么是正确的 JSON 内容类型?

但是,仅返回模型要简单得多。它会自动返回为 JSON,并且 Content-Type 设置正确:

return $model;
于 2013-09-15T21:34:11.497 回答
12

Response::json($someArray)是返回 JSON 数据的通用方式。

return $model->toJson()特定于将模型返回为 JSON。在使用 Eloquent 模型时,这将是我的首选方法。

于 2013-03-24T18:13:28.973 回答
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

于 2013-03-24T18:19:44.997 回答
1

这解决了我在 laravel 5.5 中的问题:

function allUsers()
{
    $users = \App\User::all();
    $usersJson = json_encode($users);
    return $usersJson;
}
于 2019-09-19T14:35:45.820 回答