0

例如,我有五个表(School、Student、Class、Session 和 Enrollment),Enrollment 表存储其他表的主键,现在我想在 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()}} 它显示以下错误 """Method Illuminate\Database\Eloquent\Collection::latest 不存在""
  2. 以及如何通过会话年份(字符串)进行注册计数?

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

4

1 回答 1

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

  2. 我不知道您的表格的结构如何,但是您需要按年份分组,然后进行比较

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

然后,$enrollementsByYear您将有一个集合,您可以在其中比较会话的年份并安装您的表。更改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
于 2020-07-01T01:51:50.440 回答