Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/laravel/11.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Laravel 如何从Elount Pulk方法获取数组值_Laravel_Eloquent - Fatal编程技术网

Laravel 如何从Elount Pulk方法获取数组值

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,数据如下:

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()