Преобразовать строки данных в 1 объект - PullRequest
0 голосов
/ 11 февраля 2020

Чтение Laravel 6 строк, например

 {"filter_options":[
   {"id":5,"key":"category_id","value":"2","created_at":"2020-02-10 18:23:48"},
   {"id":4,"key":"only_with_images","value":"1","created_at":"2020-02-10 18:23:48"}
  ]
 } 

Мне нужно преобразовать данные в 1 объект, например

{ 
   category_id : 2,
   only_with_images :"1"
}

Я знаю, как это можно реализовать с помощью общего круга, но существуют ли для этого методы отображения коллекций?

Спасибо!

1 Ответ

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

Я не уверен, являются ли ваши данные коллекцией или нет, но давайте предположим, что это данные

$array = ['filter_options' => [
    ['id' => 5, 'key' => 'category_id', 'value' => 2, 'created_at' => '2020-02-10 18:23:48'],
    ['id' => 4, 'key' => 'only_with_images', 'value' => 1, 'created_at' => '2020-02-10 18:23:48'],
   ]];

, вам нужно только сделать это

    //after php 7.4
    return collect($array['filter_options'])->flatMap(fn ($item) => [$item['key'] => $item['value']]);
    //before php 7.4
    return collect($array['filter_options'])->flatMap(function ($item) {
        return [$item['key'] => $item['value']];
    });

Примечание : очевидно, это синтаксис массива для доступа к свойствам ($item['key']), если ваш источник данных от laravel eloquent, вам может не понадобиться вспомогательный метод collect(), и вам нужно использовать объектный способ для доступа свойства как $item->key.

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