我有一個使用 Laravel 7(最新版本)和 PHP 7.4.4(最新版本)的運行代碼,但我想問是否有更好的實現(xiàn)方法。所以基本上,問題出在嵌套的 for 循環(huán)內(nèi)部。我想控制控制器中的變量“學(xué)期”和“科目”并將它們傳遞到視圖(index.blade.php)。然而,“科目”取決于“學(xué)期”,因此,我被強行寫下了刀片模板內(nèi)的邏輯,例如: $subjects = $semester->subjects()->where(SOME QUERY HERE)->get()請參閱下面的代碼片段:索引.blade.php@foreach($semesters as $semester) @if($subjects = $semester->subjects()->where(SOME QUERY HERE)->get()) @if($subjects->isNotEmpty()) //SOME CODE HERE @foreach($subjects as $subject) //SOME CODE HERE @endforeach @endif @endif@foreach有沒有最好的方法來實現(xiàn)這個?提前致謝。編輯我也擔(dān)心查詢,因為它在循環(huán)內(nèi)。但是,我將更改設(shè)計規(guī)范以限制視圖中顯示的“學(xué)期”數(shù)量。這也是為了限制循環(huán)內(nèi)的查詢。但是,如果您有更好的實現(xiàn),請?zhí)岢鼋ㄗh。非常感謝。
1 回答

胡說叔叔
TA貢獻1804條經(jīng)驗 獲得超8個贊
我認為你想要的是在各自的學(xué)期中急切地加載一些特定的科目。
$semesters = Semester::with([
'subjects' => function ($query) {
$query->where() // SOME QUERY HERE.
},
])
->get();
現(xiàn)在,當(dāng)您調(diào)用它時,$semester->subjects它僅返回那些過濾的主題。
示例代碼
@foreach($semesters as $semester)
@if($semester->subjects->isNotEmpty())
//SOME CODE HERE
@foreach($semester->subjects as $subject)
//SOME CODE HERE
@endforeach
@endif
@foreach
編輯
現(xiàn)在您不必擔(dān)心循環(huán)查詢。如您所見,我們已經(jīng)完成加載。這就是所謂的急切加載
- 1 回答
- 0 關(guān)注
- 157 瀏覽
添加回答
舉報
0/150
提交
取消