首页 > 解决方案 > 显示学生使用 laravel eloquent 提供的所有科目

问题描述

我已经完成了一对多的关系,但是当我在视图中循环浏览它时,即使我有多个主题,也只会显示一个主题。

这就是我在控制器中所做的

$broadsheet = Broadsheet::with(['subject', 'session', 'term', 'student', 'classarm'])
                        ->where('session_id', $request->sessions)
                        ->where('term_id', $request->terms)
                        ->where('class_arm_id', $request->classarms)
                        ->selectRaw('sum(total) as totals, count(subject_id) as countrow, student_id, subject_id, session_id, term_id, class_arm_id, total')
                        ->groupBy('student_id')
                        ->orderBy('totals', 'desc')
                        ->get();
return view('broadsheet.index')->with('broadsheet', $broadsheet);

这是索引视图

 @extends('layouts.app')
    
    @section('content')
    
    {{--@foreach($broadsheet as $subjects) 
                      @foreach ($subjects->subject as $sub)
                          <th> {{ strtoupper($sub->subject->subject_name) }}</th>
                      @endforeach
                       
                     @endforeach--}}
    
    <div class="table-responsive">
            <table class="table table-striped table-sm">
              <thead>
                <tr>
                  
                     @foreach($broadsheet as $subject) 
                       <th> {{ strtoupper($subject->subject->subject_name) }}</th>
                     @endforeach 
                  
                  <th>TOTAL</th>
                  <th>AVERAGE</th>
                  <th>POSITION</th>
                  
                </tr>
              </thead>
                <tbody>
                       @foreach($broadsheet as $result) 
     
                    <tr>             
                        <td>{{ $result->total }}</td>
                        <td>{{ $result->totals }}</td>
                        <td>{{ number_format($result->totals/$result->countrow,2) }}</td>
                        <td>{{ $i++ }}</td>
                        <td>{{ $result->exams }}</td>
                        <td>{{ $result->total }}</td>
                        
                      
    
                    </tr>
                     @endforeach 
                </tbody>
    
            </table>
    
    </div>
    @endsection

这是我的 Broadsheet 架构

class Broadsheet extends Model
{
    use HasFactory;

     protected $fillable = [
        'student_id',
        'subject_id',
        'session_id',
        'term_id',
        'class_arm_id',
        'subject_total',
    ];


    public function student()
    {
        return $this->belongsTo(Student::class, 'student_id');
    }

    public function subject()
    {
        return $this->belongsTo(Subject::class, 'subject_id');
    }

    public function session()
    {
        return $this->belongsTo(Session::class, 'session_id');
    }

    public function term()
    {
        return $this->belongsTo(Term::class, 'term_id');
    }

    public function classarm()
    {
        return $this->belongsTo(ClassArm::class, 'class_arm_id');
    }
}

我想显示这样的学生结果 预期结果

拜托,我真的需要帮助才能让它工作,因为任何帮助都将不胜感激。我最近才开始学习 laravel。我真的不知道问题出在哪里

标签: laraveleloquent

解决方案


推荐阅读