如何根据相关模型的访问次数对Laravel模型进行排序?

sqyvllje  于 2023-04-13  发布在  其他
关注(0)|答案(1)|浏览(125)

在Laravel中,我有一个Story模型,它与Episode模型有episodes()HasMany关系,我还有一个Visit模型,它与Episode模型有visits()MorphMany关系,我如何根据相关episodes()的访问次数订购Story,以便访问次数更多的剧集的故事将获得更高的优先级。
Story型号

public function episodes()
{
    return $this->hasMany(Episode::class);
}

Episode模型

public function visits()
{
    return $this->morphMany(Visit::class, 'visitable');
}

我尝试过使用Laravel的withCount()方法和其他不同的方法,但似乎不能正确使用。
以下是其中之一:

$stories = Story::withCount(['episodes' => function ($query) {
                $query->withCount('visits');
            }])
            ->orderByDesc('episodes_visits_count')
            ->get();

如何使用Laravel的withCount()方法根据相关剧集()的访问次数对故事模型进行排序?

qij5mzcb

qij5mzcb1#

尝试使用关系计数的别名,如本文档结尾部分所述:

$stories = Story::withCount([
        'episodes', 
        'episodes as visits_count' => function ($query) {
            $query->withCount('visits');
        }])
    ->orderByDesc('visits_count')
    ->get();

相关问题