Миграция с FuelPHP на Laravel: проблема с одним ответом - PullRequest
0 голосов
/ 21 февраля 2019

Я перевожу старый проект из топлива в 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,
        }
    ]
    }
    

*** edit: метод createResponse ()

    function createResponse($code, $message, $data = [])
{
    if ($data == null) {
       $data = (object)[];
    }
    return response()->json([
        'code' => $code,
        'message' => $message,
        'data' => $data
    ]);

}

1 Ответ

0 голосов
/ 22 февраля 2019

Я думаю, что хакерское решение может быть сделано путем создания собственного ключа с помощью 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');
...