我正在尝试按视频视图对连续剧进行排序。
关系:序列与序列具有hasMany关系。这部剧集与剧集之间存在hasMany关系。这些剧集与视频有一种hasOne关系。视频与观看计数之间存在hasMany关系。
<?php
//sort method:
public function mostPopular()
{
$serials = Serial::with(['series.episodes.video' => function ($query) {
$query->withCount(['videoViews' => function($query) {
}])->orderBy('video_views_count', 'desc');
}])->get();
return $serials;
}
//Serial model:
public function series()
{
return $this->hasMany(Series::class);
}
//Series model:
public function episodes()
{
return $this->hasMany(Episode::class);
}
public function serial()
{
return $this->belongsTo(Serial::class);
}
//Episode model:
public function video()
{
return $this->hasOne(Video::class);
}
public function series()
{
return $this->belongsTo(Series::class);
}
//Video model:
public function videoViews()
{
return $this->hasMany(VideoView::class);
}
public function episode()
{
return $this->belongsTo(Episode::class);
}
?>
我期望按视频视图(series.episodes.video.videoViews)排序的序列,但实际输出没有排序。
Laravel 5.8 PHP 7
发布于 2019-10-22 19:42:48
这实际上是一个愚蠢的问题,但我已经了解到,集合上的多个->sortBy实际上是可能的,而不需要解决办法。只是你需要颠倒它们的顺序。因此,要根据专辑标题对艺术家目录进行排序,这将是解决方案……
而不是:
$collection->sortBy('artist')->sortBy('title');
执行以下操作:
$collection->sortBy('title')->sortBy('artist');
https://stackoverflow.com/questions/56448423
复制相似问题