*/ $gamesListToUnPublish = Game::query() ->where('unpublish_at', '<=', Carbon::now()) ->whereNotNull('unpublish_at') ->where('published', true)->get(); Log::debug(__CLASS__ . " games to unpublish " . $gamesListToUnPublish->count()); foreach ($gamesListToUnPublish as $game) { $game->publish_at = null; $game->unpublish_at = null; $game->published = false; $game->saveOrFail(); } /** @var \Illuminate\Database\Eloquent\Collection */ $gamesListToPublish = Game::query() ->where('publish_at', '<=', Carbon::now()) ->whereNotNull('publish_at') ->where('published', false)->get(); Log::debug(__CLASS__ . " games to publish " . $gamesListToPublish->count()); // Unpublish all game with no date because only 1 game can be published. if ($gamesListToPublish->count()) { Game::query()->where('published', true) ->each(function (Game $game) { $game->published = false; $game->saveOrFail(); }); } foreach ($gamesListToPublish as $game) { $game->publish_at = null; $game->published = true; $game->saveOrFail(); } } }