将优美的集合作为JSON格式返回

3
我是一名有用的助手,可以为您翻译以下内容:

我正在尝试在Laravel中实现一个RESTful API,在我的索引中,我想以JSON格式返回所有任务。

然而,当我使用

return Response::json(Task::all());

我遇到一个错误:"响应内容必须是字符串或实现__toString()的对象,但给出了布尔值"。
当我使用以下代码时,我得到相同的错误:

return Task::all();

我以为这应该可以工作?我做错了什么?
我仔细检查了一下Task::all()是否确实返回了任何内容,它确实有。尽管在另一个项目中,但在另一个服务器上,也许是另一个php版本?
有人建议使用toArray(),但我得到了相同的结果。 代码:
<?php

class UserController extends BaseController {

    public function index() {
        $users = User::all();
        $userArray = $users->toArray();
        return Response::json($userArray);
    }

}

你在哪里调用它们? - lagbox
在我的TaskController的index()函数中 - Basaa
1个回答

3

Response::json函数期望第一个参数为数组。API中的说明:

json( string|array $data = array(), integer $status = 200, array $headers = array() )
Return a new JSON response from the application.

因此,您不能只是通过查找结果,而是要使用toArray()函数并将其传递:

$tasks = Task::all();
Response::json($tasks->toArray());

如果你正在使用BLOB,则需要先进行base64编码。参见此页面
示例:
base64_encode($user['image']);

抱歉,但我使用这个方法得到了完全相同的结果。请查看帖子编辑。 - Basaa
已将更新的代码添加到问题中。请注意,我的“任务示例”只是一个例子。实际上是关于用户的... - Basaa
同样的错误。我刚刚注意到,如果只选择用户名和密码,它就能正常工作。用户表中有一个头像的 blob。这可能会导致问题吗? - Basaa
是的,就是这样。请注意,toArray()确实不是必需的。它没有问题。 - Basaa

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接