Laravel 5 response() - > json总是返回一个数组?

时间:2015-05-26 15:23:16

标签: php json eloquent laravel-5

有没有办法阻止laravel总是返回一个数组,不管是否只有一个元素?我已经检查了文档并且做得很短。如果那只是当然的方式,这很好,只是看起来有点傻,因为如果只有一个元素,你就不会将数组发布到端点!

为了理智而退回有效载荷:

[
    {
        "id": 1,
        "created_at": "2015-05-22 15:41:24",
        "updated_at": "2015-05-22 15:41:24",
        "deleted_at": null,
        "closed_loop_interaction_type_id": 1,
        "interaction_note": "Test Interaction note",
        "closed_loop_processes_id": 1,
        "interaction_type": {
            "id": 1,
            "created_at": "2015-05-22 15:41:24",
            "updated_at": "2015-05-22 15:41:24",
            "deleted_at": null,
            "type": 0,
            "method": "Phone Call (mobile)"
        }
    }
]

这是一个对象,但是以1的数组形式发回。有没有办法阻止它?这是我填充模型的方式吗?

$query = ClosedLoopInteraction::with('interactionType');
// Construct a list of headers
$headers = \HeaderHelper::generatePaginationHeader($page, $query, 'closedloop', $limit);
\QueryHelper::handleQueryFiltering(
    $query, ['limit'=> $limit, 'page' => $page]);
$response = response()->json($query->get(), \ApiResponse::$STATUS_OK);
// Add the constructed headers to the response
\HeaderHelper::addHeadersToResponse($response, $headers);
return $response;

3 个答案:

答案 0 :(得分:6)

使用查询first()方法而不是get()方法

答案 1 :(得分:1)

嗯,Laravel,从后面开始,正在使用json_encode来返回你看到的JSON,有了这个,你可以知道当你传递数组时,无论长度如何,甚至{{ 1}},你会得到一个数组的输出,因为那是length === 1的工作方式,所以你应该像@Mark Ba​​ker说的那样,并修改以下行:

json_encode

要:

$response = response()->json($query->get(), \ApiResponse::$STATUS_OK);

答案 2 :(得分:1)

这取决于。查看代码,您将返回一个模型列表。如果是这种情况你也应该返回一个数组,无论是空的,单个还是多个模型。这样返回类型总是相同且更容易处理。但是,如果您查看特定模型,编辑或其他内容,请使用另一个答案建议的方法first()