Laravel - 通过地图携带阵列

时间:2018-02-21 16:22:17

标签: php laravel

假设我有一个模型集合,我正在这样映射:

$alreadyImported = [];

$players = Players::whereNotIn('id', $alreadyImported)
                    ->get()
                    ->random(25)
                    ->pluck('id');

$groups = $players->map(function ($item, $key) use ($alreadyImported) {

    array_merge($alreadyImported, $item->id);

    $group = [
        'username' => $item['username'],
    ];

    return $group;
});

// $groups is a pivot table with group and players

为什么$globalList总是从[]开始?如何将已合并的$globalList带到下一个地图迭代?

玩家ID无关紧要。这是为了表演。我希望通过地图迭代传递数组。

1 个答案:

答案 0 :(得分:2)

只需使用pluck()从集合中获取ID:

$ids = $players->pluck('id');

或者,如果您只需要ID:

$ids = Players::where('banned', false)->pluck('id');

如果您要添加任何其他数据,则无需将其合并到某个数组或集合,因为map()将创建新集合。

最后,您不需要使用collect(),因为get()将返回集合。