Изучение различных методов получения записей текущего месяца в Laravel

В этой статье блога мы углубимся в различные методы получения записей текущего месяца в Laravel, популярной PHP-инфраструктуре. Мы рассмотрим различные подходы на примерах кода, которые помогут вам понять и реализовать их в ваших проектах Laravel. Давайте начнем!

Метод 1: использование Eloquent Query Builder

$currentMonthRecords = YourModel::whereMonth('created_at', '=', date('m'))->get();

Этот метод использует метод whereMonth, предоставленный построителем запросов Laravel. Он фильтрует записи по месяцу из столбца created_at, сравнивая его с текущим месяцем, полученным с помощью функции date.

Метод 2: использование необработанных SQL-запросов

$currentMonthRecords = DB::select("SELECT * FROM your_table WHERE MONTH(created_at) = MONTH(CURRENT_DATE())");

Этот метод предполагает написание необработанных SQL-запросов с использованием фасада DB. Запрос выбирает все записи из таблицы your_table, где месяц в столбце created_atсоответствует текущему месяцу.

Метод 3: применение библиотеки углеродных дат

use Carbon\Carbon;
$currentMonthRecords = YourModel::whereMonth('created_at', '=', Carbon::now()->month)->get();

Carbon — мощная библиотека даты и времени, входящая в состав Laravel. Используя метод Carbon::now(), мы получаем текущую дату и время, а затем обращаемся к свойству monthдля фильтрации записей по текущему месяцу.

Метод 4. Создание пользовательской области

use Illuminate\Database\Eloquent\Builder;
public function scopeCurrentMonth(Builder $query)
{
    return $query->whereMonth('created_at', '=', date('m'));
}
$currentMonthRecords = YourModel::currentMonth()->get();

Создав в своей модели пользовательскую область, вы можете инкапсулировать логику получения записей текущего месяца. Метод scopeCurrentMonthдобавляет условие whereMonthв построитель запросов, что позволяет вам вызывать его как цепной метод в вашей модели.