以 json 格式返回 eloquent 集合
Posted
技术标签:
【中文标题】以 json 格式返回 eloquent 集合【英文标题】:Return eloquent collection as json format 【发布时间】:2014-07-14 11:06:56 【问题描述】:我正在尝试在 Laravel 中实现一个 RESTful api,对于我的索引,我想将所有任务作为 json 返回。
但是,当我使用
return Response::json(Task::all());
我收到一个错误:“响应内容必须是实现 __toString() 的字符串或对象,给定“布尔值”。
我在使用时遇到同样的错误:
返回任务::all();
我认为这应该有效?我做错了什么?
我仔细检查了 Task::all() 是否真的返回任何东西,它确实返回了。这段代码在另一个项目中工作,虽然在另一个服务器上,也许是另一个 php 版本?
有人建议使用 toArray(),但我得到了相同的结果。代码:
<?php
class UserController extends BaseController
public function index()
$users = User::all();
$userArray = $users->toArray();
return Response::json($userArray);
【问题讨论】:
你在哪里称呼那些? 在我的 TaskController 中的 index() 中 【参考方案1】:Response::json 函数期望参数 1 是一个数组。来自 API:
json( string|array $data = array(), integer $status = 200, array $headers = array() )
Return a new JSON response from the application.
因此,您不能只传递 find 的结果,而是使用 toArray() 函数并将其传递:
$tasks = Task::all();
Response::json($tasks->toArray());
编辑---
如果您使用的是 BLOB,请先对其进行 base64_encode。请参阅this 帖子。
例子:
base64_encode($user['image']);
【讨论】:
对不起,我得到了完全相同的结果。见帖子编辑。 向问题添加了更新的代码。请注意,我的任务示例只是一个示例。这实际上是关于用户... 同样的错误。我刚刚注意到,如果我只选择用户名和密码,它就可以正常工作。用户表中有一个用于头像的 blob。这会导致问题吗? 是的,做到了。请注意, toArray() 确实不是必需的。没有它也能正常工作。以上是关于以 json 格式返回 eloquent 集合的主要内容,如果未能解决你的问题,请参考以下文章
修改 Eloquent 查询以使其始终返回空集合的最有效方法是啥?
使用 Vue.js 以 JSON 格式返回列表的 API 的 AJAX 调用