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