Измените структуру ответа с помощью Eloquent: API Resources

Я новичок в Laravel. Я использую laravel в качестве конечной точки REST, я использую Eloquent: ресурсы API для преобразования моих данных в JSON.

Я использую коллекцию и ресурс для анализа данных, полученных из моего запроса. Итак, ниже представлена ​​структура моего ответа:

data:
    0
        id
        name
    1
        id
        name

Теперь мне нужно иметь некоторую категоризацию данных, поэтому я требую, чтобы структура данных была в формате ниже

data:
    24H
        0
            id
            name
        1
            id
            name
    7D
        0
            id
            name
        1
            id
            name

Я попробовал несколько способов добиться этого. Статический способ, который я пробовал для тестирования, заключался в изменении метода toArray ResourceCollection и добавлении ключа 24H для данных, которые мы получаем.

Но я знаю, что это неправильный и общий способ.

Я хотел бы знать, как я могу достичь указанного выше формата ответа в универсальном и расширяемом виде.

Ваша помощь очень ценится.

Спасибо.

1 ответ

В коллекциях Laravel есть метод groupBy, который может вам помочь, убедитесь, что столбец, который вы хотите использовать в качестве ключа, также выбран. Итак, если у вас есть

data: 
    0: 
        id: 1
        name: Bob
        category: 24H

    1: 
        id: 2
        name: Bill
        category: 7D

потом $data->groupBy('category') вернет следующее

data: 
    24H:
        0: 
            id: 1
            name: Bob
            category: 24H

    7D: 
        0:
            id: 2
            name: Bill
            category: 7D
Другие вопросы по тегам