Массив хешей 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
// )
// )
// )