如何使用Laravel API功能返回第一个JSON元素?

时间:2018-10-09 08:29:36

标签: json laravel

关于此代码,定义一个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.

怎么办?

2 个答案:

答案 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);
}