Используйте чанк для вставки данных в базу данных Laravel - PullRequest
2 голосов
/ 19 марта 2020

Я пытаюсь разделить игроков турнира на разные группы. Я использую метод chunk, чтобы разделить игроков по группе на каждые 10 игроков (или пользователей).

Я пытаюсь, как показано ниже:

public function store(Request $request)
{
    $tournamentid = $request->tournamentid;
    $data = TournamentPlayer::where('tournament_id', $tournamentid)->get()->chunk(10);

    for ($i=1; $i <= count($data); $i++) {
        foreach ($data as $group) {
            foreach ($group as $key => $value) {
                TournamentGroup::create([
                    'group' => $i,
                    'tournament_id' => $tournamentid,
                    'user_id' => $value->user_id //player
                ]);
            }
        }

    }
}

Но это не дает мне ожидаемый результат. Он хранит все записи для каждой группы, но я хочу сохранить как - первые 10 или меньше записей как группа 1, вторые 10 или меньше записей как группа 2 и так далее ...

Спасибо !!

1 Ответ

1 голос
/ 19 марта 2020

Надеюсь, что это работает ...

public function store(Request $request)
{
    $tournamentid = $request->tournamentid;
    $data = TournamentPlayer::where('tournament_id', $tournamentid)->get()->chunk(10);

    // for ($i=1; $i <= count($data); $i++) { //removed
        foreach ($data as $i => $group) { // also assigned key for group count
            foreach ($group as $key => $value) {
                TournamentGroup::create([
                    'group' => $i+1, //changed
                    'tournament_id' => $tournamentid,
                    'user_id' => $value->user_id //player
                ]);
            }
        }

    //} //removed
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...