Отлично, спасибо !!!
я есть несколько моделей, все с отметками времени. Я часто использую 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());
}
}