Доброй ночи! У меня в базе, данные о продуктах храняться с применением EAV - это хоть и косвенно, но касаеться проблемы.
Суть в том, что у продукта, есть разные характеристики, а у характеристик соответственно значения. Мне необходимо отсортировать выборку по определенному полю в таблице с значением характеристики, но при этом опираясь на определенно поле в таблице с характеристиками. Количества самих харктеристик я не знаю, пользователь может создать бесконечное их число.
Все связи у меня реализованы штатными возможностями eloquent orm. Массив с данными выглядит вот так
$products = [
[
'id' => 1,
'title' => 'Product N',
'specifications' => [
[
'id' => 2,
'title' => 'Display',
'position' => 1,
'value' => [
'id' => 22,
'value' => 'OLED',
'position' => 1
]
],
[
'id' => 3,
'title' => 'Storage',
'position' => 3,
'value' => [
'id' => 11,
'value' => '16GB',
'position' => 1
]
],
]
],
[
'id' => 2,
'title' => 'Product C',
'specifications' => [
[
'id' => 2,
'title' => 'Display',
'position' => 1,
'value' => [
'id' => 22,
'value' => 'IPS',
'position' => 3
]
],
[
'id' => 3,
'title' => 'Storage',
'position' => 3,
'value' => [
'id' => 12,
'value' => '32GB',
'position' => 2
]
],
]
]
];
Отсортировать нужно следующим образом, идем в specifications, берем элемент с наименьшим значением position, идем в value. Сортируем по position. Берем следующий элемент массива specifications и по кругу. До тех пор, пока не отсортируем все значения.
Причем у продуктов могут быть разные группы характеристик, соответственно, нужно универсальное решение. Подскажите пожалуйста, как такого рода сортировки вообще делать. Можно ли, сделать все это на уровне запроса?