У меня есть таблица videos
, в которой хранится информация о video
, и другая таблица videoStats
, в которой хранится сколько раз a. видео было просмотрено.
Я создаю Service
с некоторыми пользовательскими методами в соответствии с требованиями приложения. Я не знаю, идеально ли это для создания нового сервиса или я могу использовать эти методы в самой модели. Если есть какой-то другой способ сделать это лучше, я был бы признателен за некоторые предложения.
У меня есть метод mostWatchedVideos
, который возвращает список с watch_count
и video_id
для каждого видео.
Второй метод mostWatchedVideosBetween
должен возвращать то же самое, что и mostWatchedVideos
но за определенный период времени. Я могу повторить тот же код с дополнительным аргументом для даты ->whereBetween('createdAt', [$from, $till])
, и это бы сработало, но я подумал о том, что, поскольку оба метода используют один и тот же код, есть ли способ повторно использовать метод, но с фильтр даты?
public static function mostWatchedVideosBetween(Carbon $from, Carbon $till)
{
}
public static function mostWatchedVideos($limit = NULL)
{
return VideoStats::select(\DB::raw('count(*) as watch_count, videoId'))
->groupBy('videoId')
->orderBy('watch_count', 'DESC')
->limit($limit)
->get();
}