#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-keyby3. @miken32 Есть ли какой-либо другой способ включить в него все данные, а не получить только последние?
4. @MohamedMufeed я вижу. Я попробую этот метод.
5. То, что вы спрашиваете, не имеет смысла. Как это может быть ключом по этому значению и сохранить все элементы?