Как построить этот Laravel Eloquent Query - PullRequest
0 голосов
/ 17 февраля 2020

Я хочу построить вложенный массив из простой таблицы с помощью Laravel Eloquent, но не смог.

Так что ниже приведен снимок моей таблицы

enter image description here

и это массив, который я хочу построить

enter image description here

1 Ответ

1 голос
/ 17 февраля 2020

Вы можете использовать некоторые методы из коллекции :

$result = $data->groupBy(['market_id', 'base_currency', 'currency_id'])
    ->map(function ($item) {
        return $item->map(function ($item) {
            return $item->map(function ($item) {
                return $item->map(function ($item) {
                    return $item['currency_id'];
                });
            })->flatten();
        })->sortKeys();
    });

dd($result->toArray());
array:1 [
  1 => array:2 [
    1 => array:2 [
      0 => 2
      1 => 3
    ]
    2 => array:2 [
      0 => 1
      1 => 2
    ]
  ]
]

Объяснение

groupBy

Метод groupBy группирует элементы коллекции по заданному ключу. Несколько критериев группировки могут быть переданы в виде массива. Каждый элемент массива будет применен к соответствующему уровню в многомерном массиве:

$data->groupBy(['market_id', 'base_currency', 'currency_id']);

map

Метод map выполняет итерацию по коллекции и передает каждое значение в данный обратный звонок.

->map(function ($item) {
    return $item;
});

flatten

Метод flatten сводит многомерную коллекцию в одно измерение:

->flatten()

sortKeys

Метод sortKeys сортирует коллекцию по ключам базового ассоциативного массива:

->sortKeys()
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...