Laravel雄辩与分组和排序有许多关系

Laravel雄辩与分组和排序有许多关系,laravel,eloquent,Laravel,Eloquent,我使用的是Laravel5.6,我想收集过去两周发表的特色文章,并根据上周的浏览量进行排序。理想情况下,在模型上使用分页 DB: 模型 类作者扩展模型 { 受保护的$table='author'; 公共职能条款() { 返回$this->hasMany(Article::class,'id','author_id'); } } 类文章扩展了模型 { 受保护的$table='article'; 公共功能作者() { 返回$this->hasOne(Author::class,'id','Autho

我使用的是Laravel5.6,我想收集过去两周发表的特色文章,并根据上周的浏览量进行排序。理想情况下,在模型上使用分页

DB:

模型

类作者扩展模型
{
受保护的$table='author';
公共职能条款()
{
返回$this->hasMany(Article::class,'id','author_id');
}
}
类文章扩展了模型
{
受保护的$table='article';
公共功能作者()
{
返回$this->hasOne(Author::class,'id','Author_id');
}
}
类特性Darticle扩展模型
{ 
受保护的$table='featured_article';
静态公共函数getFeaturedArticles($limit)
{
$articles=FeaturedArticles::where('created_at','>=',Carbon::now()->subDays(14))->with(['article.author','article.articleViews'])->分页($limit);
}
}
然后在控制器、功能或作业中

$featured_articles=FeaturedArticle::getFeaturedArticles(15);

这很好,但结果尚未排序。如何按7天内文章视图的总和对分页结果进行排序。有可能吗?

假设您首先想要浏览次数最多的文章:

类功能Darticle扩展模型
{
公共职能{
返回$this->hasMany(ArticleView::class,'article_id','article_id');
}
}
$articles=FeaturedArticle::where('created_at','>=',Carbon::today()->subDays(14))
->withCount(['ArticleView'=>函数($query){
$query->select(数据库::原始('sum(视图)'))
->其中('date','>=',Carbon::today()->subDays(7));
}])
->orderByDesc(“文章视图计数”)
->带有('article.author'、'article.articleViews')
->分页($limit);
我将
Carbon::now()
替换为
Carbon::today()
。否则,您将无法获得在
now()
之前14天发布的文章

此外,您的关系也不正确:

公共功能文章()
{
返回$this->hasMany(Article::class,'author_id','id');
}
公共功能作者()
{
返回$this->belongsTo(Author::class,'Author_id','id');
}

如果您想让whereHas()更具说服力,可以尝试使用回调函数。如果没有,则使用查询生成器可以轻松查询简单联接。从“当前,Laravel无法有效执行使用groupBy语句的分页操作。如果需要使用带有分页结果集的groupBy,建议您查询数据库并手动创建分页器。”因此,这个问题只是对结果进行排序。我尝试了对关系进行分组,但mysql对此毫无用处:“SELECT list不在GROUP BY子句中,并且包含未聚合的列”在FeaturedArticle函数中有任何排序方法吗?您好,先生。请你也检查一下这个问题好吗?
author (id, name, ....)
article (id, title, content, publish_date, ...)
article_view (id, article_id, date, views)
featured_article (id, article_id, created_at)