Instantly share code, notes, and snippets.

What would you like to do?
Laravel Custom Class/Model Scheduling
//Don't forget to change the namespace!
namespace App\Traits;
use Cron\CronExpression;
use Illuminate\Support\Carbon;
use Illuminate\Console\Scheduling\ManagesFrequencies;
trait Schedulable{
use ManagesFrequencies;
protected $expression = '* * * * *';
protected $timezone;
public function isDue(){
$date = Carbon::now();
if ($this->timezone) {
return CronExpression::factory($this->expression)->isDue($date->toDateTimeString());
public function nextDue(){
return Carbon::instance(CronExpression::factory($this->expression)->getNextRunDate());
public function lastDue(){
return Carbon::instance(CronExpression::factory($this->expression)->getPreviousRunDate());

This comment has been minimized.

simonhamp commented Feb 22, 2018

Thanks for sharing!


This comment has been minimized.

karlmonson commented Feb 27, 2018

Thank you for this trait!


This comment has been minimized.

adamlevenson commented Aug 6, 2018

Thanks for this! Exactly what I needed, gave me the right path forward.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment