我正在将一个旧项目从燃料迁移到laravel,而我对其中一个请求的响应有问题。问题是,我需要laravel的响应与燃料中的响应完全相同,因为我已经在iOS和Android中拥有应用程序并且具有相同的响应意味着我只需要更改端点。我似乎无法复制这里的回复:
$belongs = Model_Belong::find('all',array(
'where'=>array(
array('id_user',$id_user),
),
));
return $this->createResponse(200, 'List', $belongs);
*****RESPONSE****
{
"code": 200,
"message": "List",
"data": {
"[1][1]": {
"id_user": 1,
"id_group": 1
},
"[1][2]": {
"id_user": 1,
"id_group": 2
},
"[1][3]": {
"id_user": 1,
"id_group": 3
}
}
}
$belongs = Belong::where('id_user', $id_user)
->get();
return $this->createResponse(200, 'List', $belongs);
*****RESPONSE*****
{
"code": 200,
"message": "List",
"data": [
{
"id_user": 1,
"id_group": 1,
},
{
"id_user": 1,
"id_group": 2,
},
{
"id_user": 1,
"id_group": 3,
}
]
}
***编辑:createResponse()方法
function createResponse($code, $message, $data = [])
{
if ($data == null) {
$data = (object)[];
}
return response()->json([
'code' => $code,
'message' => $message,
'data' => $data
]);
}
我认为一个hacky解决方案可以通过sql生成自己的密钥并使用KeyBy()检索它,如下所示:
Belong::select([
'id_user',
'id_group',
DB::raw("CONCAT('[', id_user, '][', id_group, ']') as mykey")
])
->where('id_user', $id_user)
->get()
->keyBy('mykey');