Solucionado (ver solução)
Solucionado
(ver solução)
1
resposta

Bulk Update - episódios assistidos

Oii, boa noite, eu tentei melhorar o código de acordo como Vinicius sugeriu, no arquivo EpisodesController.php, mas não consegui fazer o bulk update, segue meu código:

public function update(Request $request, Season $season)
    {
        $watchedEpisodes = $request->episodes;

        $episodesteste = [];
        foreach ($season->episodes as $episode) {
                $episodesteste[] = [
                'watched' => in_array($episode->id, $watchedEpisodes)];
        }


        return to_route('episodes.index', $season->id);
    }

Até esse ponto ele me retorna um array com true e false nos campos onde marquei, mas como faço o update de uma vez no banco para diminuir as queries? Eu tentei algumas formas sem sucesso

Agradeço

1 resposta
solução!

Rafaela, uma das formas pra otimizar esse código é simplesmente escrevendo as queries de update:

$watchedEpisodes = $request->episodes;

DB::transaction(function () use ($watchedEpisodes) {
    DB::table('episodes')->whereIn('id', $watchedEpisodes)->update(['watched' => true]);
    DB::table('episodes')->whereNotIn('id', $watchedEpisodes)->update(['watched' => false]);
});

Quer mergulhar em tecnologia e aprendizagem?

Receba a newsletter que o nosso CEO escreve pessoalmente, com insights do mercado de trabalho, ciência e desenvolvimento de software