Laravel Select records in specific year

14,396

Solution 1

You can do it like that: $posts = Blog::where( DB::raw('YEAR(created_at)'), '=', '2015' )->get();

Here you can get year from created_at field with YEAR function, then compare with your date.

Solution 2

Just for completition. There is a Laravel method for it.

Blog::whereYear('created_at', 2017)->get();

See where clause, subsection whereDate / whereMonth / whereDay / whereYear

Solution 3

You can use scope function in your model. Eg:

Your Model

class Blog extends Eloquent {
    public function scopePopular($query,$year)
    {
        return $query->where('year', '=', $year);
    }
}

Usage

$blog = Blog::popular(1999)-get();
Share:
14,396
Paolo Resteghini
Author by

Paolo Resteghini

Updated on June 13, 2022

Comments

  • Paolo Resteghini
    Paolo Resteghini almost 2 years

    I'm new to Laravel and struggling to identify how I can select all records created in 2015 using the created_at field provided by the timestamp.

    The model I am using is Blog:

    $posts = Blog::latest()->get();
    

    Example date in database:

    2015-01-25 12:53:27
    

    Could anyone shed some light?

    Thanks!