简体   繁体   中英

Laravel Select records in specific year

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!

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.

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

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

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

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();

Scope Function Worked perfectly for me:

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

}

Usage:

$blog = Blog::where('status','active')->season(2021)->get();

The technical post webpages of this site follow the CC BY-SA 4.0 protocol. If you need to reprint, please indicate the site URL or the original address.Any question please contact:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM