php - Laravel Blade - 显示短路关系
问题描述
在我正在构建的学术应用程序中,我为学生提供了申请他们想参加的课程的能力。现在,一旦发送表格,就会向管理员发送一封电子邮件,其中将显示一个简短的表格,其中包括申请的相关学校、课程和最后的课程。
每个学校都有很多课程,每个课程都有很多课程。每个课程属于一个课程,每个课程属于一个学校。申请人可以申请许多课程,并且一个课程可以是许多应用程序的一部分(Application_Course pivot)。
Schools Programs Courses Applicants Applicant_Course
id id id id applicant_id
title school_id program_id fname course_id
title title lname
学校.php
public function programs()
{
return $this->hasMany(Program::class);
}
public function courses()
{
return $this->hasManyThrough(Course::class, Program::class);
}
程序.php
public function school()
{
return $this->belongsTo('App\Models\School', 'school_id', 'id');
}
public function courses()
{
return $this->hasMany(Course::class);
}
课程.php
public function program()
{
return $this->belongsTo('App\Models\Program', 'program_id', 'id');
}
申请人.php
public function courses()
{
return $this->belongsToMany(Course::class)->withTimestamps();
}
应用程序控制器.php
public function store($applicant_type, Request $request)
{
$schools = School::orderBy('created_at', 'asc')->get();
$programs = Program::orderBy('created_at', 'asc')->get();
$input = $request->all();
Applicant::create($input);
$applicant = Applicant::where('fname', $input['fname'] )
->where('lname', $input['lname'] )
->where('email', $input['email'] )
->latest()->first();
$checkboxes = $request->get('course-check');
$applicant->courses()->attach($checkboxes);
\Mail::send('applicationMail', array(
'fname' => $input['fname'],
'lname' => $input['lname'],
'course-check' => $input['course-check'],
'applicant' => $applicant,
'schools' => $schools,
'programs' => $programs,
), function($message) use ($request){
$message->from(env('MAIL_USERNAME'));
$message->to(env('MAIL_USERNAME'))->subject('Course Application - '.
$request->get('lname').' '.$request->get('fname'));
});
return redirect()->back()->with(['success' => 'Your application has been sent']);
}
}
期望的最终结果如下所示:
School_1
---Program_1
------Course_1
------Course_2
------Course_3
---Program_2
------Course_4
School_2
---Program_3
------Course_5
---Program_4
------Course_6
------Course_7
到目前为止,我已经尝试了刀片foreach
循环和if
语句的多种组合,但没有达到预期的结果。
第一次尝试:
@foreach ($applicant->courses as $course)
<tr class="course-title-row">
<td class="left-column"><b>Title: </b></td>
<td class="right-column">{{ $course->title }}</td>
</tr>
@endforeach
这个 ^ 只是一一返回应用程序的课程标题,如下所示:
Title: Course_Title_1
Title: Course_Title_2
Title: Course_Title_3
Title: Course_Title_4
etc.
第二次尝试:
@foreach ($applicant->courses as $course)
@foreach($schools as $school)
@if($course->program->school->id == $school->id)
<p>{{ $school->title }}</p>
@foreach ($programs as $program)
@if ($course->program->id == $program->id)
<p>{{ $school->title}}</p>
<tr class="course-title-row">
<td class="left-column"><b>Program Title: </b></td>
<td class="right-column">{{$course->title}}</td>
</tr>
@endif
@endforeach
@endif
@endforeach
@endforeach
提交包含属于 school_1 的 program_1 的 course_1 和 course_2 以及属于 school_2 的 program_2 的 course_3 和 course_4 的表单后,我得到以下格式的结果:
School_1 Title
School_1 Title
Program Title: Program_1 Title
School_1 Title
School_1 Title
Program Title: Program_2 Title
School_2 Title
School_2 Title
Program Title: Program_3 Title
School_2 Title
School_2 Title
Program Title: Program_4 Title
我知道这是一个很大的帖子,但有人可以帮我得到想要的结果吗?非常感谢读到这里的任何人!
解决方案
推荐阅读
- google-cloud-dataflow - 数据流字数示例说我需要指定 --gcpTempLocation 参数
- networking - 使用 Unifi 和 Sonicwall 设备的网关建议和网络设计
- c++ - 成员列表初始化与继承?
- google-sheets - 按名称引用的 Google 表格和“自定义”历史记录
- tensorflow - TensorBoard 颜色与源图像不匹配
- linux - setuid bash 脚本和 binfmt_misc 凭据标志
- java - 代码在 IntelliJ IDEA 中有效,但不适用于没有交互式控制台提供输入的在线编译器
- python - 如何通过 Node.js 将数据发送到 Python SSL 套接字
- swift - MTKView 以低于 AVCaptureVideoPreviewLayer 的分辨率显示摄像机源
- javascript - 用于所有 ajax 调用的通用 ajax 加载器