Отлично, спасибо !!!

я есть несколько моделей, все с отметками времени. Я часто использую whereDate, чтобы получить все строки за сегодня и вчера, вот так:

ModelName::whereDate('created_at', now()->today())->get();
ModelName::whereDate('created_at', now()->yesterday())->get();

Я хочу, чтобы это было короче, проще, например:

ModelName::today()->get();
ModelName::yesterday()->get();

Я не могу найти какие-либо методы, чтобы сделать это, поэтому я нашел в документации, что я могу сделать собственные "области". Проблема в том, что я могу сделать это для указанной модели, но я не могу найти способ сделать это глобально, для всех моделей. Теперь мне нужно вставить эту область видимости в каждый класс модели. Это работает, но мне нужно повторять этот код в каждом классе моделей, так что я уверен, что это не очень хороший способ сделать это.

<?php

namespace App;

use Illuminate\Database\Eloquent\Model;

class ModelName extends Model
{


    /**
     * Custom scope (query builder method) to easy return all items from today
     *
     * @param \Illuminate\Database\Eloquent\Builder $query
     * @return \Illuminate\Database\Eloquent\Builder
     */
    public function scopeToday($query)
    {
        return $query->whereDate('created_at', now()->today());
    }


    /**
     * Custom scope (query builder method) to easy return all items from yesterday
     *
     * @param \Illuminate\Database\Eloquent\Builder $query
     * @return \Illuminate\Database\Eloquent\Builder
     */
    public function scopeYesterday($query)
    {
        return $query->whereDate('created_at', now()->yesterday());
    }
}

Ответы на вопрос(1)

Ваш ответ на вопрос