哈希数组 laravel

Array of hashes 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
       }


       ]
}

尝试了以下 eloquent 函数,但类型 ID 200 中的重复项将被忽略。
$type_id_hash=$fm->fmmodelitems->keyBy('TypeId');

对于 typeid 200,使用 keyby 函数时只存在一条记录,因为它会忽略重复项。我想在 hashmap 数组中搜索 typeid 之类的键。怎么做到呢。

也许你想要 groupBy on Collection:

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

这应该将它们归入 'key'。

$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
//     )
//   )
// )