How to filter Model records with created_date in Laravel
Categorized as Laravel
Often times you need to filter your Model records based on the created_date field. With Laravel, you can make scope Methods after() and before() and use them like below.
// in Post.php
public function scopeAfter(Builder $query, string $date): Builder
{
return $query->where($this->qualifyColumn('created_at'), '>=', $date . ' 00:00:00');
}
public function scopeBefore(Builder $query, string $date): Builder
{
return $query->where($this->qualifyColumn('created_at'), '<=', $date . ' 23:59:59');
}
// Usage
Post::query()
->active()
->after('2022-02-28')
->before('2022-03-31')
->get();
In case multiple of your Models needs these methods, you can move them to Trait.