Laravel拥有许多不同的模型

时间:2018-06-12 08:58:05

标签: php laravel

我遇到这种情况:ParentStudent模型属于多对多关系,每个模型都belongsTo() User模型。 Branch有许多StudentUserhasManyThrough(Student::class, User::class);)。我需要与Parent建立类似的关系:hasManyThrough(Parent::class, User::class);但问题是branch_id表中的users对于父母来说可以为空。所以我不能在分支机构下取得父母。我必须去找那些学生在现任分校的父母。如何让BranchParent Student的{​​{1}}内获得许多Branch

以下是我尝试解决此问题的一些尝试。在parents()中的Branch.php方法中:

return \App\Parent::has('students.user.branch', $this)->get();

没有工作。我知道它不应该起作用。下一个:

return \App\Parent::whereHas('students', function($query){
    $query->where() // stuck here. something could have been done here
})->get();

我甚至尝试过滤父母集合,但不幸的是,它只返回集合中的第一个父集合:

return \App\Parent::all()->filter(function($parent){
        foreach($this->students as $student){
            foreach($student->parents as $currentParent){
                return $parent->id == $currentParent->id;
            }
        }
});

1 个答案:

答案 0 :(得分:1)

您需要使用嵌套的whereHas

return \App\Parent::whereHas('students', function($query) use ($branchId){
        $query->whereHas('user', function($subQu) use ($branchId){
            $subQu->where('branch_id','=',$branchId);
        });
})->with('students','students.user','students.user.branch')->get();