【问题标题】:Object of class Illuminate\Database\Eloquent\Builder could not be converted to stringIlluminate\Database\Eloquent\Builder 类的对象无法转换为字符串
【发布时间】:2016-05-13 21:27:36
【问题描述】:

我有这个代码。一切正常 - 它从数据库获取数据,但我无法返回。我正在使用 jQuery 发布它。

Route::post('get/images', function(){
    $images = App\Images::where('realisation_id',Request::get('id'));
    return $images;
});

然后它返回

Illuminate\Database\Eloquent\Builder 类的对象无法转换为字符串

【问题讨论】:

  • 您没有执行查询,只是构建它....这就是您为您的路线返回的内容,一个查询对象,您没有得到任何数据,只是使用您的代码'已经发布.... 获取数据,也许 json 对其进行编码(否则您将简单地尝试返回一个 Collection 对象),然后再返回它
  • 嗯,我刚刚在其他论坛或 Laravel 文档中找到了这个解决方案(我的意思是我刚刚在这里展示的那个解决方案)。我会尝试:)
  • 当我使用 json_encode($images);它返回空数组,但是当我使用 return $images->count() 时,它返回从 db 获取的真实数据量。
  • 不要使用 PHP 的 json_encode() 函数,因为您在此处针对框架进行编程。这适用于有相同错误并可能认为他们可以尝试此(错误)解决方案的人。也请考虑接受您自己的答案为有效。

标签: php model eloquent laravel-5.2


【解决方案1】:

我很笨!

Route::post('get/images', function(){
    $images = App\Images::where('realisation_id',Request::get('id'))->get();
    return $images->toJson();
});

一切都很酷!

【讨论】:

  • Laravel 中的 Collections 类始终存在 toJson() 方法。直接返回集合将不起作用,因为 Response 类将尝试将其转换为恰好给出此错误消息的字符串。我在这里也有一个 JSON API(POST 请求)。 5.6链接:laravel.com/docs/5.6/collections#method-tojson
  • 现在我看到了,我需要在where() 之后调用->get()(仅返回Builder 实例)。并且错误消息消失了,JSON 正在正确呈现。
猜你喜欢
  • 2020-12-01
  • 2019-11-29
  • 2020-05-13
  • 2022-01-24
  • 2017-03-15
  • 2016-01-01
  • 2015-09-23
  • 2018-06-16
  • 2019-06-27
相关资源
最近更新 更多