[英]Laravel Eloquent Eager Loading Multiple Has Many Relationship
在我的DB中,模型Class
有許多Student
,每個Student
有許多Homework
,每個Homework
有許多Question
。 如何編寫一個渴望加載的查詢來獲取與一個特定Class
相關的每個Question
?
我可以使用以下代碼獲得嵌套結構:
$class = Class::find($classId);
$collection = $class->with('students.homeworks.questions')->get();
我怎樣才能得到這個集合中所有問題的數組? 我目前使用toArray()
方法獲得的結構是這樣的:
{ //Class
...
students: [
{
homeworks: [
{
questions: [{...}]
},
...
]
},
...
]
}
在這種情況下沒有本機關系。
我創建了一個具有無限級別的HasManyThrough
關系: GitHub上的存儲庫
安裝后,您可以像這樣使用它:
class Class extends Model {
use \Staudenmeir\EloquentHasManyDeep\HasRelationships;
public function questions() {
return $this->hasManyDeep(Question::class, [Student::class, Homework::class]);
}
}
您可以在Student模型中創建一個函數:
public function questions(){
$questions = [];
foreach($this->homework as $homework){
foreach($homework->questions as $question){
array_push($questions, $question);
}
}
return $questions;
}
這樣,每當您有一個學生對象時,您都可以得到所有類似這樣的問題的數組:
$student->questions
希望這可以對您有所幫助。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.