Как установить ключ массива в запросе

#php #laravel #query-builder

#php #laravel #конструктор запросов

Вопрос:

Ожидаемый результат: я пытаюсь вставить ключ, включающий те же данные отдела, что и ниже

 "data": {
        "Department A": {
            "code": "9781848574472",
            "department": "Department A",
            "total_quantity": 198,
            "total_price": "0.00"
        },
        {
            "code": "9781848574649",
            "department": "Department A",
            "total_quantity": 8,
            "total_price": "0.00"
        },
        "Department C": {
            "code": "ABC001",
             "department": "Department C",
            "total_quantity": 1,
            "total_price": "100.00"
        }
    },
 

Код

  Sale_item::where('tags.type', 'Department')       
                                    ->selectRaw('code, 'department', tags.name AS department, sum(qty) as total_quantity, sum(total) as total_price')
                                    ->get()
                                    ->keyBy('department');
 

После добавления keyBy
У меня есть результаты запроса ниже.

 "data": {
        "Department A": {
            "code": "9781848574472",
            "department": "Department A",
            "total_quantity": 198,
            "total_price": "0.00"
        },
        "Department C": {
            "code": "ABC001",
            "department": "Department C",
            "total_quantity": 1,
            "total_price": "100.00"
        }
    },
 

В приведенном выше коде отсутствует один неверный набор данных.

Комментарии:

1. Отношения Laravel — идеальный кандидат для этой работы. Это позволит вам запрашивать то же самое, что и Sale_item::with('department')->get()

2. » keyBy Метод обрабатывает коллекцию по заданному ключу. Если несколько элементов имеют один и тот же ключ, в новой коллекции появится только последний » laravel.com/docs/8.x/collections#method-keyby

3. @miken32 Есть ли какой-либо другой способ включить в него все данные, а не получить только последние?

4. @MohamedMufeed я вижу. Я попробую этот метод.

5. То, что вы спрашиваете, не имеет смысла. Как это может быть ключом по этому значению и сохранить все элементы?