返回时laravel抛出错误 - >控制器

时间:2016-08-01 20:55:46

标签: laravel-5 eloquent

这样:

public function show($id)
    {
        return DB::table('apps')->where('id', $id)->first();//->get();
    }

将返回错误: UnexpectedValueException in Response.php line 399: The Response content must be a string or object implementing __toString(), "object" given.

这不会返回错误(但我不能使用它,因为我需要一个对象而不是数组):

public function show($id)
    {
        return DB::table('apps')->where('id', $id)->get();
    }

怎么了?

由于

1 个答案:

答案 0 :(得分:1)

DB外观将返回原始PHP对象。从Laravel中的控制器返回数据时,它应该是字符串,数组,雄辩模型或响应对象(即视图)。由于您正在返回原始对象,因此Laravel会尝试将其转换为字符串,这是您问题的根源。

解决此问题的最佳方法是使用Model代替DB门面

public function show($id)
{
    return AppModel::where('id', $id)->firstOrFail();
}

注意:我在这里使用firstOrFail()因为如果应用程序不存在,Laravel将自动中止404。

通过返回一个雄辩的模型,Laravel知道自动将它转换为JSON。

如果您不想使用eloquent,则将对象置于数组中。

public function show($id)
{
    return (array)DB::table('apps')->where('id', $id)->first();
}

Laravel将在响应中为您提供该数组并将其作为JSON案例。