Quando eu desmarcar todos os episódios assistidos de uma temporada, o $request->episodes
vai retornar null
eu estou utilizando está forma de otimizar o código(Citado nesse tópico aqui):
$watchedEpisodes = $request->episodes; // episodios marcados
DB::transaction(function () use ($watchedEpisodes, $season) {
if (is_null($watchedEpisodes)) { // se nao vier marcado nenhum episodio
DB::table('episodes')->where('season_id', $season->id)->update(['watched' => false]);
}else {
DB::table('episodes')->where('season_id', $season->id) // episodios nao selecionados
->whereNotIn('id', $watchedEpisodes)->update(['watched' => false]);
DB::table('episodes')->where('season_id', $season->id) // episodios selecionados
->whereIn('id', $watchedEpisodes)->update(['watched' => true]);
}
});
dessa forma eu valido se o $request->episodes
for nulo é porque não há nenhum episódio assistido 'watched' => false
o código acima retorna no máximo 3 queries, existe outra forma de deixar esse código mais expressivo com a mesma quantidade de queries retornadas ?