从FuelPHP迁移到Laravel:一个响应的问题

时间:2019-02-21 19:48:55

标签: php laravel-5 eloquent laravel-query-builder fuelphp

我正在将一个旧项目从燃料迁移到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
    ]);

}

1 个答案:

答案 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');