Я использую Laravel 5.6 и хотел бы получить сборник популярных статей, опубликованных за последние 2 недели, отсортированный по количеству просмотров за последнюю неделю.Идеально использовать нумерацию страниц для модели.
DB:
author (id, name, ....)
article (id, title, content, publish_date, ...)
article_view (id, article_id, date, views)
featured_article (id, article_id, created_at)
Модели
class Author extends Model
{
protected $table = 'author';
public function articles()
{
return $this->hasMany(Article::class,'id','author_id');
}
}
class Article extends Model
{
protected $table = 'article';
public function author()
{
return $this->hasOne(Author::class,'id','author_id');
}
}
class FeaturedArticle extends Model
{
protected $table = 'featured_article';
static public function getFeaturedArticles($limit)
{
$articles = FeaturedArticles::where('created_at', '>=', Carbon::now()->subDays(14))->with(['article.author','article.articleViews'])->paginate($limit);
}
}
Затем в контроллере или функции или задании
$featured_articles = FeaturedArticle::getFeaturedArticles(15);
Это отлично работает, но результаты еще не отсортированы.Как отсортировать разбитые на страницы результаты по сумме article_view.views за 7 дней.Возможно ли это?