我正在制定一个评分系统,我正试图把分数分组,然后循环通过他们,所以如果你平手,你得到相同的位置。例子:

score = 100
score = 100
score = 90

前2分应排在第1位,第3分应排在第2位。
所以我试着
 $submissions = Submission::where([
                                        ['league_id', $league->id ],
                                        ['challenge_id', $challenge->id]
                                    ])
                                    ->orderBy('class', 'desc')
                                    ->orderBy('user_score', 'asc')
                                    ->groupBy('user_score')
                                    ->get();

然后我循环:
if( count($submissions) > 0 )
{
      foreach ( $submissions as $index => $submission_group ) {
          if( count($submission_group) > 0 ){

              foreach ( $submission_group as $i => $submission {
                  $submission->points = $i+ 1;
                  $submission->save();
              }
          }
      }
}

问题是$submissions返回一个由2个条目组成的数组(仅用于第1个和第3个条目)。我想它会返回2个数组。就像这样:
[
  submission[],
  submission[],
],
[
 submission[],
]

如果我删除groupBy,我将得到所有3个条目。它似乎把两个100分归为一项,把90分归为另一项

最佳答案

我不确定它是否相关,但我认为groupBy()方法应该在get()方法之后使用。

关于mysql - 通过保留个人条目,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/48937476/

10-14 23:19