【问题标题】:how to slice a grouped Laravel collection如何对分组的 Laravel 集合进行切片
【发布时间】:2019-03-22 09:12:16
【问题描述】:

我有一个集合,我按特定键分组

$collection = Model::all()->groupBy('section_id');

这给我留下了一个包含多个根节点(部分)的集合,每个节点包含多个项目的集合。

print_r($collection->toArray());

Array
(
    [section_1] => Array
        (
            [0] => stdClass Object
                (
                    [section_id] => section_1
                    ...
                )
            [1] => stdClass Object
                (
                    [section_id] => section_1
                    ...
                )
            [2] => stdClass Object
                (
                    [section_id] => section_1
                    ...
                )
            [0] => stdClass Object
                (
                    [section_id] => section_1
                    ...
                )
        )
    [section_2] => Array
        (
            [0] => stdClass Object
                (
                    [section_id] => section_2
                    ...
                )
            [1] => stdClass Object
                (
                    [section_id] => section_2
                    ...
                )
            [2] => stdClass Object
                (
                    [section_id] => section_2
                    ...
                )
            [0] => stdClass Object
                (
                    [section_id] => section_2
                    ...
                )
        )
)

这很好,但我现在想做的是将每个部分中的项目减少到 2 个。

我尝试了以下方法,但这似乎不起作用。

$collection->map(function($section)
{
    $reduced_section = $section->slice(0,2);
    return $reduced_section;
});

这是正确的,还是有更好的(可行的)方法来实现这一点?

谢谢

【问题讨论】:

  • 你试过的代码结果如何?
  • 没有效果。每个部分仍然包含所有嵌套项

标签: laravel slice


【解决方案1】:

尝试改用take(2) 并直接返回结果。此函数将拉取集合的前两项。

另外,不要忘记将映射的集合分配回变量。 The documentation 声明 map() 函数不会修改集合,但会返回一个新的修改集合。

$collection = $collection->map(function($section)
{
    return $section->take(2);
});

【讨论】:

  • 完美。这是集合到我缺少的另一个变量的映射。非常感谢你的帮助。我已经为此挠头很久了!!!
猜你喜欢
  • 1970-01-01
  • 2022-10-14
  • 2021-07-16
  • 2021-04-18
  • 1970-01-01
  • 2018-08-20
  • 2018-05-10
  • 2022-10-03
  • 2015-09-30
相关资源
最近更新 更多