有没有办法阻止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;
答案 0 :(得分:6)
答案 1 :(得分:1)
嗯,Laravel,从后面开始,正在使用json_encode
来返回你看到的JSON,有了这个,你可以知道当你传递数组时,无论长度如何,甚至{{ 1}},你会得到一个数组的输出,因为那是length === 1
的工作方式,所以你应该像@Mark Baker说的那样,并修改以下行:
json_encode
要:
$response = response()->json($query->get(), \ApiResponse::$STATUS_OK);
答案 2 :(得分:1)
这取决于。查看代码,您将返回一个模型列表。如果是这种情况你也应该返回一个数组,无论是空的,单个还是多个模型。这样返回类型总是相同且更容易处理。但是,如果您查看特定模型,编辑或其他内容,请使用另一个答案建议的方法first()
。