Skip to content

Instantly share code, notes, and snippets.

@radermacher
Last active April 10, 2023 20:25
Show Gist options
  • Save radermacher/1555704a3e123de024581899ce9aaf84 to your computer and use it in GitHub Desktop.
Save radermacher/1555704a3e123de024581899ce9aaf84 to your computer and use it in GitHub Desktop.
<?php
namespace App\Traits;
use Carbon\Carbon;
trait FilterableByDates
{
public function scopeToday($query, $column = 'created_at')
{
return $query->whereDate($column, Carbon::today());
}
public function scopeYesterday($query, $column = 'created_at')
{
return $query->whereDate($column, Carbon::yesterday());
}
public function scopeMonthToDate($query, $column = 'created_at')
{
return $query->whereBetween($column, [Carbon::now()->startOfMonth(), Carbon::now()]);
}
public function scopeQuarterToDate($query, $column = 'created_at')
{
$now = Carbon::now();
return $query->whereBetween($column, [$now->startOfQuarter(), $now]);
}
public function scopeYearToDate($query, $column = 'created_at')
{
return $query->whereBetween($column, [Carbon::now()->startOfYear(), Carbon::now()]);
}
public function scopeLast7Days($query, $column = 'created_at')
{
return $query->whereBetween($column, [Carbon::today()->subDays(6), Carbon::now()]);
}
public function scopeLast30Days($query, $column = 'created_at')
{
return $query->whereBetween($column, [Carbon::today()->subDays(29), Carbon::now()]);
}
public function scopeLastQuarter($query, $column = 'created_at')
{
$now = Carbon::now();
return $query->whereBetween($column, [$now->startOfQuarter()->subMonths(3), $now->startOfQuarter()]);
}
public function scopeLastYear($query, $column = 'created_at')
{
return $query->whereBetween($column, [Carbon::now()->subYear(), Carbon::now()]);
}
}
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment