这样:
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();
}
怎么了?
由于
答案 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案例。