【问题标题】:Returning an Eloquent model as JSON in Laravel 4在 Laravel 4 中将 Eloquent 模型返回为 JSON
【发布时间】:2013-03-14 04:27:46
【问题描述】:

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

#1:

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

#2:

return $user->toJson();

【问题讨论】:

    标签: php json api laravel laravel-4


    【解决方案1】:

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

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

    #2 发送Content-Type:text/html

    #1 更正确,但取决于您的 Javascript,请参阅:What is the correct JSON content type?

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

    return $model;
    

    【讨论】:

      【解决方案2】:

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

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

      【讨论】:

        【解决方案3】:

        在 #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.
        【解决方案4】:

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

        function allUsers()
        {
            $users = \App\User::all();
            $usersJson = json_encode($users);
            return $usersJson;
        }
        

        【讨论】:

          猜你喜欢
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 2013-10-09
          • 2017-11-23
          • 1970-01-01
          • 2014-03-25
          • 1970-01-01
          • 2012-11-28
          相关资源
          最近更新 更多