Php 从嵌套循环停止循环,并删除特定循环集(如果该循环在laravel中有内容)
我在db中的一个表中有几行,每一行都与三个表相关,每个表都有许多行。当我循环主表行时,我现在也循环三个表行。如果其中一个表的行中有一个内容,那么我希望防止只显示包含值的整个子循环 在我的控制器中:Php 从嵌套循环停止循环,并删除特定循环集(如果该循环在laravel中有内容),php,laravel,Php,Laravel,我在db中的一个表中有几行,每一行都与三个表相关,每个表都有许多行。当我循环主表行时,我现在也循环三个表行。如果其中一个表的行中有一个内容,那么我希望防止只显示包含值的整个子循环 在我的控制器中: public function classWiseResult(Request $request){ $students = Students::where('class',$request->class) ->with('firstTerm')
public function classWiseResult(Request $request){
$students = Students::where('class',$request->class)
->with('firstTerm')
->with('secondTerm')
->with('finalTerm')
->get();
return view('admin.showResult.show',compact('students'));
}
我认为:
@foreach($students as $student)
<tr>
<td>{{$student->id}}</td>
<td>{{$student->fname}}</td>
<?php $Ftotal = 0; $Fcount = 0; ?>
@foreach($student->firstTerm as $first)
<?php $Fcount++;?>
<?php $Ftotal += gradePoint($first->number); ?>
@endforeach
<?php $fttp = gpa($Ftotal, $Fcount) ;?>
<td>{{$fttp}}</td>
<td>
@if($Ftotal){
{letterGrade(gpa($Ftotal, $Fcount))}
}
@endif
</td>
@foreach($student作为$student)
{{$student->id}
{{$student->fname}
@foreach($student->first学期作为$first)
@endforeach
{{$fttp}}
@若有($F总计){
{字母等级(gpa($Ftotal,$Fcount))}
}
@恩迪夫
结果:
如果主题编号低于32,我想跳过显示结果。此方法使用关系计数比较 控制器
public function classWiseResult(Request $request){
$students = Students::where('class',$request->class)
->withCount(['firstTerm as firstTermPromoted' => function($q) {
$q->where('number', '>', 32);
}])
->withCount('firstTerm as firstTermAllCount')
->withCount(['secondTerm as secondTermPromoted' => function($q) {
$q->where('number', '>', 32);
}])
->withCount('secondTerm as secondTermAllCount')
->withCount(['finalTerm as finalTermPromoted' => function($q) {
$q->where('number', '>', 32);
}])
->withCount('finalTerm as finalTermAllCount')
->with('firstTerm')
->with('secondTerm')
->with('finalTerm')
->get();
return view('admin.showResult.show',compact('students'));
}
在您的视图中,可以比较所有关系的总计数和通过条件的关系计数
查看
@foreach($students as $student)
@if($student->firstTermPromoted == $student->firstTermAllCount
&& $student->secondTermPromoted == $student->secondTermAllCount
&& $student->finalTermPromoted == $student->finalTermAllCount)
{{ "Promoted" }}
@else
{{ "Not Promoted" }}
@endif
@endforeach
你想排除第一学期、第二学期或第三学期成绩低于32分的学生吗?是的,你是对的,但我想在课堂上展示所有成绩。您可以将其命名为类结果表。witch包含第一个、第二个、第三个术语的结果,最后一个结果在一张纸上。有什么想法吗?试试这样的<代码>$students=students::where('class',$request->class)->whereHas('firstterm',函数($q){$q->where('number','>',32)})->with('firstterm')->get()代码>但我想在同一张表中包括升级和未升级。这不可能吗?@Taslim,答案似乎是上等票。不接受。请点击向下投票按钮下方的勾号。无论如何,我很高兴我的回答帮助了你。