При выборе данных json из базы данных я столкнулся с проблемой.Есть ли способ извлечь индекс данных по индексу.
Мне это нужно, потому что я хочу суммировать и группировать по имени элемента json, я могу добиться этого, если я извлекаю первые элементы из массива с помощью:
DB::raw('JSON_UNQUOTE(JSON_EXTRACT(resources, "$[0].name[0]")) as brand_name'),
DB::raw('JSON_UNQUOTE(JSON_EXTRACT(resources, "$[0].brand_id[0]")) as brand_id'),
DB::raw('SUM(JSON_EXTRACT(resources, "$[0].quantity[0]")) as quantity')
А затем я сгруппировал бы по $ [0] .name [0] и получил бы уникальные результаты.
Данные, хранящиеся в sql:
[[{\"name\": \"Product 1\", \"brand_id\": \"2\", \"quantity\": 2},
{\"name\": \"Product 2\", \"brand_id\": \"3\", \"quantity\": 1}],
[{\"name\": \"Product 3\", \"brand_id\": \"1\", \"quantity\": 2},
{\"name\": \"Product 1\", \"brand_id\": \"2\", \"quantity\": 5}],
[{\"name\": \"Product 4\", \"brand_id\": \"4\", \"quantity\": 2},
{\"name\": \"Product 5\", \"brand_id\": \"5\", \"quantity\": 5}]]
Iследует суммировать количество всех товаров с одинаковым названием и получить уникальный ответ, а не несколько товаров с одинаковым именем, если вы понимаете, о чем я говорю.Например, должен быть только один
Продукт 1 с суммарным количеством 7.