我正在将一个旧项目从燃料迁移到laravel,并且在响应其中一个请求时遇到了麻烦。问题是,我需要laravel的响应与加油时的响应完全相同,因为我已经在iOS和Android中拥有该应用程序,并且具有相同的响应意味着我只需要更改端点即可。我似乎无法在此处复制响应:
FuelPHP代码和响应:
$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
}
}
}
Laravel代码和响应:
$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
]);
}
答案 0 :(得分:1)
我认为可以通过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');