【问题标题】:Laravel Dashboard Query on Enrolled students this Year?Laravel Dashboard 查询今年在校学生?
【发布时间】:2020-10-21 00:56:51
【问题描述】:

例如,我有五个表(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. 以及如何将会话年份(字符串)传递给注册计数?

谁能提出解决以下问题的最佳方法?

【问题讨论】:

    标签: php eloquent laravel-blade laravel-views


    【解决方案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-01-26
      • 1970-01-01
      • 2020-08-26
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多