关于此代码,定义一个API端点以获取帖子详细信息:
/ posts / {post}
public function show($post)
{
return DB::table('posts')->where('id', $post)->get()->map(function($s){
$s->type = __(Post::TEXT[$s->type]);
return $s;
});
}
它会像这样返回json:
[
{
"id": 1,
"name": "Test"
}
]
想要返回这样的数据:
{
"id": 1,
"name": "Test"
}
因此在该方法的末尾添加了->first()
:
public function show($post)
{
return DB::table('posts')->where('id', $post)->get()->map(function($s){
$s->type = __(Post::TEXT[$s->type]);
return $s;
})->first();
}
但是出现错误:
(1/1) UnexpectedValueException
The Response content must be a string or object implementing __toString(), "object" given.
怎么办?
答案 0 :(得分:1)
您不仅可以返回map函数的结果,还可以将其转换为如下所示的对象:
$result = DB::...
return (object) $result;
答案 1 :(得分:1)
要确保api路由正确返回json响应,请使用https://www.npmjs.com/package/exceljs#interface帮助器。这将尝试解析任何数据并添加正确的标头。
public function show($post)
{
$post = DB::table('posts')->where('id', $post)->get()->map(function ($s) {
$s->type = __(Post::TEXT[$s->type]);
return $s;
})->first()
return response()->json($post);
}