Массив хешей laravel

Использование Laravel 4.2 Получите приведенную ниже структуру данных с помощью запросов Eloquent.

[
  {
      Id: 1,
      Product:Test1,
      TypeId:100
   }
     {
      Id: 2,
      Product:Test2,
      TypeId:200
   }
      {
      Id: 3,
      Product:Test2,
      TypeId:200
   }
];

Хотите создать хеш-карту на основе TypeId в качестве ключа, чтобы я мог легко искать товары. Хотите окончательный вывод ниже пути

{
      '100' :  {
          Id: 1,
          Product:Test1,
          TypeId:100
       },
       '200' : [

                     {
          Id: 2,
          Product:Test2,
          TypeId:200
       },
          {
          Id: 3,
          Product:Test2,
          TypeId:200
       }


       ]
}

Пробовал приведенную ниже красноречивую функцию, но дубликаты в Type Id 200 игнорируются.
$ Type_id_hash=$ FM->fmmodelitems->keyBy('TypeId');

Для typeid 200 существует только одна запись при использовании функции keyby, поскольку она игнорирует дубликаты. Я хочу найти массив hashmap для ключа, как typeid. Как это можно сделать.

1 ответ

Решение

Возможно, вы хотите groupBy наCollection:

$grouped = $fm->fmmodelitems->groupBy('TypeId');

Это должно сгруппировать их под этим "ключом".

$collection = new Illuminate\Support\Collection([
    ['Id' => 1, 'Product' => 'Test1', 'TypeId' => 100],
    ['Id' => 2, 'Product' => 'Test2', 'TypeId' => 200],
    ['Id' => 3, 'Product' => 'Test3', 'TypeId' => 200]
]);

$grouped = $collection->groupBy('TypeId');

$grouped->all();

// array(
//   100 => array(
//     0 => array(
//       'Id' => 1,
//       'Product' => 'Test1',
//       'TypeId' => 100
//     )
//   ),
//   200 => array(
//     0 => array(
//       'Id' => 2,
//       'Product' => 'Test2',
//       'TypeId' => 200
//     ),
//     1 => array(
//       'Id' => 3,
//       'Product' => 'Test3',
//       'TypeId' => 200
//     )
//   )
// )
Другие вопросы по тегам