*/ $demarcheSlidesListToUnPublish = DemarcheSlide::query() ->where('unpublish_at', '<=', Carbon::now()) ->whereNotNull('unpublish_at') ->where('published', true)->get(); Log::debug(__CLASS__ . " demarcheSlides to unpublish " . $demarcheSlidesListToUnPublish->count()); foreach ($demarcheSlidesListToUnPublish as $demarcheSlide) { $demarcheSlide->publish_at = null; $demarcheSlide->unpublish_at = null; $demarcheSlide->published = false; $demarcheSlide->saveOrFail(); } /** @var \Illuminate\Database\Eloquent\Collection */ $demarcheSlidesListToPublish = DemarcheSlide::query() ->where('publish_at', '<=', Carbon::now()) ->whereNotNull('publish_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->publish_at = null; $demarcheSlide->published = true; $demarcheSlide->saveOrFail(); } } }