Laravel 仪表板查询今年在校学生?

Laravel Dashboard Query on Enrolled students this Year?

比如我有五个表(School, Student, Class, Session, Enrollment) Enrollment Table 存储了其他表的Primary Key, 现在我喜欢明智地计算 Session 有多少学生在 Session 2019-2020 注册并显示在仪表板中。

 public function index()

    {
        
            $schools=School::all();
            $students=Student::all();
            $sessions=Session::all();
            $enrollements=Enrollement::all();
        
        return view('dashboard',compact('schools','students','enrollements','sessions'));
    }
  1. 当我写 {{$sessions->latest()}} 时,它显示以下错误“”“方法 Illuminate\Database\Eloquent\Collection::latest 不存在””
  2. 以及如何通过session年(String)来计算入学人数?

谁能建议解决以下问题的最佳方法?

  1. 对于集合,使用last()方法($sessions->last()https://laravel.com/docs/7.x/collections#method-last

  2. 我不知道你的table是怎么构造的,但是你需要按年份分组然后比较

    $enrollementsByYear = Enrollment::selectRaw('year, count(year) AS enrollmentsByYear')
                                    ->groupBy('year')
                                    ->get();
    

然后在 $enrollementsByYear 中您将拥有一个集合,您可以在其中比较会话的年份并安装您的 table。将 year 更改为实际的列名。

您可以轻松地与以下内容进行比较:

@foreach ($sessions as $session)
    @foreach ($enrollementsByYear as $y)
        @if ($session->year == $y->year)
            <label>{{ $session->year }}</label>: <span> {{$y->enrollmentsByYear }}</span>
        @endif
    @endforeach
@endforeach