0

我正在创建一个统计应用程序,并且我正在尝试将相同等级的运动员分组在一起。

我有两张桌子:athletesathlete_position。这是因为任何给定的运动员都可以在多个位置上比赛(评分不同)。

我能够得到一个查询来获取我正在寻找的所有记录,我只是挂断了以正确的方式将它们组合在一起。

以下是我目前选择运动员的方式:

MyController.php

public function ratings($year, $position_id) {
    $athletes = Athlete::where('graduation_year', $year)
        ->join('athlete_position', 'athlete_position.athlete_id', '=', 'athletes.id')
        ->where('athlete_position.position_id', '=', $position_id)
        ->groupBy('athlete_position.rating')
        ->orderBy('last_name')
        ->orderBy('athlete_position.rank')
        ->get();

    return response()->json(['data' => $athletes], 200);
}

这很好用。我要完成的下一步是将所有 5 星级运动员分组在一起,将所有 4.5 星级运动员分组在一起,依此类推。

所以我正在尝试这样的事情:

 $collection = collect(
     Athlete::where('graduation_year', $year)
     ->join('athlete_position', 'athlete_position.athlete_id', '=', 'athletes.id')
     ->where('athlete_position.position_id', '=', $position_id)
 )->groupBy('athlete_position.rating');

我正在将数据发送到另一个应用程序,当我尝试循环响应时:

{% for collection in athletes %}
    {% for athlete in athletes %}
        {{ athlete.first_name }}<br>
    {% endfor %}
{% endfor %}            

我收到以下错误:键为“0、1、2、3、4、5、6、7、8、9、10”的数组的键“first_name”不存在。

感谢您的任何建议!

4

1 回答 1

0

希望这将有助于其他人,如果他们遇到这个线程。这是我必须使用的查询以及如何在视图中显示数据。

MyController.php

$collection = collect(
    $athletes = Athlete::where('athletes.graduation_year', $year)
        ->join('athlete_position', 'athlete_position.athlete_id', '=', 'athletes.id')
        ->where('athlete_position.position_id', '=', $position_id)
        ->orderBy('rank', 'asc')
        ->orderBy('rating', 'asc')
        ->get()
    )->groupBy('rating');


    return response()->json(['data' => $collection], 200);

然后在我看来(在另一个系统中)我可以像这样循环遍历元素/组(使用树枝):

 ...
 {% if athletes|length %}
     {% for rating, athletes in athletes %}
         <div>{{ rating }}</div> // 5.0
          {% for athlete in athletes %}
              {{ athlete.last_name }}, {{ athlete.first_name }}  // Durst, Fred
              ...
          {% endfor %}
     {% endfor %}
 {% endif %}
于 2016-12-27T17:23:52.213 回答