有一张名为“视频”的桌子。我得按下面的顺序分类。
> Video 1 ActiveContest Boost = 1 Fill=80
> Video 2 ActiveContest Boost = 0 Fill=100
> Video 3 ActiveContest Boost = 0 Fill=20
> Video 4 NotInContest Boost = 0 Fill=0
> Video 5 PastContest Boost = 1 Fill=80
> Video 6 PastContest Boost = 1 Fill=100首先,我们展示所有的视频,是在一个积极的比赛。在这个活动比赛视频的排序中,我们根据boost和fill对视频进行排序。Boost意味着视频将显示在活跃的比赛之上。如果没有提升视频,这取决于视频的填充量。在那之后,我们随机地向用户显示视频,因为他们的位置并不重要。
发布于 2022-07-11 13:25:47
你的数据模型是什么?
您可以使用$collections>sortBy()
$sorted = $collection->sortByAsc(function ($product, $key) {
if ($product['contest'] != 'PastContest') {
return $product['contest'];
} else {
return 0;
}
})->sortByDesc(function ($product, $key) {
if ($product['contest'] != 'PastContest') {
return $product['Boost'] . $product['Fill'];
} else {
return 0;
}
});这应该适用于您的情况,竞赛可以按字母顺序排序,否则您可以创建一个自定义函数。
https://stackoverflow.com/questions/72938464
复制相似问题