首页 > 解决方案 > 如何通过 laravel 将我返回的数据格式化为特定格式

问题描述

public function autoComplete(Request $request) {
    $keywords = $request->keywords;
    $phones = [];
    $results = Phone::where('number', 'LIKE', '%' . $keywords . '%')->get();

    if ($results) {
        foreach ($results AS $phone) {
            $phones[] = [
                'id' => $phone->id,
                'text' => $phone->number,
            ];
        }
    }
    return json_encode($phones);
}

上一个方法返回以下 JSON 格式

[["01111111111"],["01222222222"],["03333333333"],["04444444444"]]

但我想要这样

{"suggestions":["01111111111", "01222222222", "03333333333", "04444444444"]} 

我试图像这样返回

return json_encode('suggestions:', $phones);

标签: jsonlaravel-5

解决方案


要返回该特定格式,您可以使用集合的 map 方法检查此链接

所以我会给出这个简短的解决方案,在这里我们将改变你foreachmap function

为此,您的autoComplete功能将是这样的:

public function autoComplete(Request $request) {
    $keywords = $request->keywords;

    $results = Phone::where('number', 'LIKE', '%' . $keywords . '%')->get();

    if ($results) {
        $phones =  $results->map(function($phone) {
            return [
                'id' => $phone->id,
                'text' => $phone->number,
            ];
        });

    }

    return response()->json(['suggestions' => $phones], 201);
}

我们返回201 http code以证明请求已成功创建。


推荐阅读