本文主要是介绍Laravel5 关联查询 —— 多级一对多的实现,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!
例如一个学校,学校有许多年级,年级有许多班级,班级里有许多老师,那么这种多级的多对一该怎么实现呢?
1.先设置他们的Model
学校的: School.PHP
- <?php
-
- namespace App;
-
- use Illuminate\Database\Eloquent\Model;
-
- class schoolClass extends Model
- {
- protected $table = 'schools';
-
- public function hasManyGrades(
- {
- return $this->hasMany('App\Grade', 'school_id', 'id');
- }
- }
年级的:Grade.php
- <?php
-
- namespace App;
-
- use Illuminate\Database\Eloquent\Model;
-
- class Grade extends Model
- {
- protected $table = 'grades';
-
- public function hasManyClasses()
- {
- return $this->hasMany('App\schoolClass', 'grade_id', 'id');
- }
- }
班级的:schoolSchool.php
- <?php
-
- namespace App;
-
- use Illuminate\Database\Eloquent\Model;
-
- class schoolClass extends Model
- {
- protected $table = 'jjxiao_classes';
-
- public function hasManyTeachers()
- {
- return $this->hasMany('App\Teacher', 'class_id', 'id');
- }
- }
老师的:Teacher.php
- <?php
-
- namespace App;
-
- use Illuminate\Database\Eloquent\Model;
-
- class Teacher extends Model
- {
- protected $table = 'jjxiao_teacher_staffs';
-
- }
2.控制器里面查出
- public function index(){
- $id=1;
- $school=School::find($id);
- $grades=$school->hasManyGrades()->get();
-
- foreach($grades as $g){
- $classes[]=$g->hasManyClasses()->get();
- }
-
- foreach ($classes as $cl) {
- foreach($cl as $c){
- $teachers[]=$c->hasManyTeachers()->get();
- }
- }
-
- foreach ($teachers as $te) {
- foreach($te as $t){
- $teacher[]=$t;
- }
- }
- return view('home.myschool_teacher.index')
- ->withGrade($grades)
- ->withTeacher($teacher);
- }
这篇关于Laravel5 关联查询 —— 多级一对多的实现的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!