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