Laravel 如何从Elount Pulk方法获取数组值
我有一个表,有两列,X和Y,数据如下:Laravel 如何从Elount Pulk方法获取数组值,laravel,eloquent,Laravel,Eloquent,我有一个表,有两列,X和Y,数据如下: X Y 1 1 1 2 1 3 1 4 2 5 2 6 当我做->弹拨'Y',X'之类的事情时,我想要一个如下的答案: ['1' => [1,2,3,4], '2' => [5,6]] 但它只给了我一个值,而不是像这样的数组 ['1' => 1, '2' => '5'] 如何将值设置为数组?使用 使用: 使用 这比我以前更接近了!现在,您建议的groupBy方法返回[1=>[[X:1,Y:1],[X
X Y
1 1
1 2
1 3
1 4
2 5
2 6
当我做->弹拨'Y',X'之类的事情时,我想要一个如下的答案:
['1' => [1,2,3,4], '2' => [5,6]]
但它只给了我一个值,而不是像这样的数组
['1' => 1, '2' => '5']
如何将值设置为数组?使用
使用:
使用
这比我以前更接近了!现在,您建议的groupBy方法返回[1=>[[X:1,Y:1],[X:1,Y:2],[X:1,Y:3]…所以现在数组太多了。reduce方法给出了正确的答案。你认为有一个解决方案可以使用groupBy,还是我应该坚持使用reduce?我会更新答案并用groupBy解决问题谢谢更新!如果这三种方法都有效,有什么理由选择一种方法而不是另一种方法吗?我注意到一件事,which是一个低优先级,但如果它可以被修复,那就更好了,因为它改变了Y列中要排序的值的顺序。在我上面的示例数据中,它们已经被排序了,但是如果它们的顺序不同,使用上述方法,它们总是被排序。我尝试了所有三种方法,得到了相同的结果。
$collection->reduce(function ($carry, $item) {
// First iteration
if ($carry == null) {
$carry = [];
}
$carry[$item->X][] = $item->Y;
return $carry;
});
$collection->groupBy('X')->map(function ($item) {
return $item->pluck('Y');
})->toArray()
$collection->mapToGroups(function ($item) {
return [$item['X'] => $item['Y']];
})->toArray()