【发布时间】:2018-07-03 10:56:39
【问题描述】:
所以我有以下分类:
- 学校
- 部门
- 类
一所学校hasMany 部门。一个部门hasMany 班。
一个部门belongsTo一个学校。一个班级belongsTo一个系和一个学校。
学校、部门或班级可以分配测试。这是通过如下所示的数据透视表确定的:
- school_test
- department_test
- class_test
这一切都完美无缺,但在测试页面上,我希望能够显示以下信息:
School Name | Department Name | Class Name
如果它是全校范围的,那么它应该只显示学校名称。
如果是部门范围的,则应显示:School Name | Department Name。
如果是针对课程,则应显示:School Name | Department Name | Class Name。
我的刀片代码如下所示:
{{$test->school->first()->name}}
@if($test->department->isNotEmpty())
|
{{$test->department->first()->name}}
@if($test->class->isNotEmpty())
|
{{$test->class->first()->name}}
@endif
@endif
这适用于全校范围的测试,但当我尝试为某个班级加载测试时它会中断,因为它显然与通过数据透视表的部门没有关系。相反,我需要做这样的事情:
{{$test->class->first()->department->school->name}}
这会遍历关系,但我如何将其巧妙地整合到我的视图中以解释不同的场景?
欢迎大家帮忙!
【问题讨论】:
-
为什么在你的视图中查询??每一行都在做一个不好的新查询,对吧??
-
嘿@Sohel0415 - 公平点。这主要是为了让我快速测试。我会在某个时候将它重构为模型方法。
-
使用控制器代码、模型中的关系函数更新您的问题
标签: php laravel relationship blade