*/ $demarcheSlidesListToUnPublish = DemarcheSlide::query() ->where('unpublished_at', '<=', Carbon::now()) ->whereNotNull('unpublished_at') ->where('published', true)->get(); Log::debug(__CLASS__ . ' demarcheSlides to unpublish ' . $demarcheSlidesListToUnPublish->count()); foreach ($demarcheSlidesListToUnPublish as $demarcheSlide) { $demarcheSlide->published_at = null; $demarcheSlide->unpublished_at = null; $demarcheSlide->published = false; $demarcheSlide->saveOrFail(); } /** @var \Illuminate\Database\Eloquent\Collection */ $demarcheSlidesListToPublish = DemarcheSlide::query() ->where('published_at', '<=', Carbon::now()) ->whereNotNull('published_at') ->where('published', false)->get(); Log::debug(__CLASS__ . ' demarcheSlides to publish ' . $demarcheSlidesListToPublish->count()); // Unpublish all demarcheSlide with no date because only 1 demarcheSlide can be published. if ($demarcheSlidesListToPublish->count()) { DemarcheSlide::query()->where('published', true) ->each(function (DemarcheSlide $demarcheSlide) { $demarcheSlide->published = false; $demarcheSlide->saveOrFail(); }); } foreach ($demarcheSlidesListToPublish as $demarcheSlide) { $demarcheSlide->published_at = null; $demarcheSlide->published = true; $demarcheSlide->saveOrFail(); } } }