php-根据关系获取标题(laravel)
内容导读
互联网集市收集整理的这篇技术教程文章主要介绍了php-根据关系获取标题(laravel),小编现在分享给大家,供广大互联网技能从业者学习和参考。文章包含1893字,纯文字阅读大概需要3分钟。
内容图文
所以我有以下分类法:
>学校
>部门
>班级
一所学校有很多部门.一个部门有很多班.
部门属于学校.班级属于部门和学校.
学校,部门或班级可以分配测试.这是通过数据透视表确定的,如下所示:
>学校测试
>部门测试
> class_test
所有这些都绝对完美,但是在测试页上,我希望能够显示以下信息:
学校名称|部门名称|班级名称
如果是在学校范围内,则应仅显示学校名称.
如果是全系,则应显示:学校名称|部门名称.
如果是上课,则应显示:学校名称|部门名称|班级名称.
我的刀片服务器代码如下所示:
{{$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}}
这遍历了各种关系,但是我如何将其巧妙地纳入考虑范围以解决不同的情况?
欢迎所有帮助!
解决方法:
获取所有测试$tests = Test :: all()(或根据需要添加查询范围)
使用@foreach($tests作为$test)遍历每个测试
将关系添加到学校,部门,班级的测试模型班级
function school() {
$this->belongsTo(School::class);
}
创建一个辅助函数来确定测试直接属于什么
function isFor($parent) {
switch($parent) {
case 'school':
return $this->school;
case 'department':
return $this->department;
case 'class':
return $this->class;
}
}
然后您可以在视图中使用它来检查测试直接属于什么
@if($test->isFor('school'))
如果您不想切换/区分大小写,请使用if / elseif做类似的事情
function isFor() {
if($this->school) {
return 'school';
}
elseif($this->department) {
return 'department';
}
elseif($this->class) {
return 'class';
}
}
然后在视图中类似:
@if($test->isFor() == 'school')
确定直接父级是什么之后,您可以直接从父级访问名称,而不必经历其他关系,因此:
@if($test->isFor('department'))
{{ $test->department->name }}
我也建议为每个不同的视图创建不同的局部/视图
@if($test->isFor('department'))
@include('partials.test-department')
@endif
并准确地将该视图包含在该部分视图中
内容总结
以上是互联网集市为您收集整理的php-根据关系获取标题(laravel)全部内容,希望文章能够帮你解决php-根据关系获取标题(laravel)所遇到的程序开发问题。 如果觉得互联网集市技术教程内容还不错,欢迎将互联网集市网站推荐给程序员好友。
内容备注
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 gblab@vip.qq.com 举报,一经查实,本站将立刻删除。
内容手机端
扫描二维码推送至手机访问。