Laravel通过视图中的2个不同模型嵌套@foreach [英] Laravel Nested @foreach By 2 Different Model in View
问题描述
模型
// Relationship in \App\FatherRegistrars and \App\MotherRegistrars and \App\GuardianMaleRegistrars \App\GuardianFemaleRegistrars
public function student_registrars()
{
return $this->belongsToMany('App\StudentRegistrars')->withTrashed();
}
控制器
public function index(Request $request)
{
$dataFathers = \App\FatherRegistrars::get();
$dataMothers = \App\MotherRegistrars::get();
$dataGM = \App\GuardianMaleRegistrars::get();
$dataGF = \App\GuardianFemaleRegistrars::get();
// manual pagination using code attached in AppServiceProvider.php
$data = $dataFathers->toBase()->merge($dataMothers)->paginate($items);
return view('parents-guardians-registrars.index', compact('data', 'dataFathers', 'dataMothers', 'dataGM', 'dataGF'))->withItems($items);
}
查看
@foreach($data as $var)
<tr>
<td style="text-align:center;">
<input type="checkbox" id="select" class="sub_chk" data-id="{{$var->id}}" value="{{$var->id}}" name="selected_values[]"/>
</td>
<td>{{$var->id }}</td>
<td>{{$var->name}}</td>
<td>{{$var->email}}</td>
<td>
<?php $elements = array(); ?>
@foreach($var->student_registrars as $category)
<?php $elements[] = '<a href=" '.route('student-registrars.show', $category->id).' "> '.$category->name.' </a>'; ?>
@endforeach
<?php echo implode(',<br>', $elements); ?>
</td>
<td>
// Second foreach should be here
</td>
<td>
<a href="{{ route('father-registrars.show', $var->id) }}" class="btn btn-primary btn-sm">Detail</a>
</td>
@endforeach
// Second foreach
@foreach($dataGM as $var2)
<tr>
<td>
<?php $elements = array(); ?>
@foreach($var2->student_registrars as $category)
<?php $elements[] = '<a href=" '.route('student-registrars.show', $category->id).' "> '.$category->name.' </a>'; ?>
@endforeach
<?php echo implode(',<br>', $elements); ?>
</td>
</tr>
@endforeach
</tr>
上面代码的结果是:
我在一个视图中有多个与foreach有关的小问题.这实际上只是一个简单的问题,但我被困在这里.任何身体都能解决吗?我应该使用局部视图吗?
I have a little problem related multiple foreach in one view. It's actually just a simple problem but I am stuck here. Any body can solve it? Should I use partial view to do this?
推荐答案
这可能无法正常工作(未经测试或验证),但是您可以尝试以下方法:
This may not exactly work (not tested or verified), but you can give something like this a try:
@foreach($data as $var)
<tr>
<td style="text-align:center;">
<input type="checkbox" id="select" class="sub_chk" data-id="{{$var->id}}" value="{{$var->id}}" name="selected_values[]"/>
</td>
<td>{{$var->id }}</td>
<td>{{$var->name}}</td>
<td>{{$var->email}}</td>
<?php $elements = array(); ?>
@foreach($var->student_registrars as $i => $category)
<td>
<?php $elements[] = '<a href=" '.route('student-registrars.show', $category->id).' "> '.$category->name.' </a>'; ?>
<?php echo implode(',<br>', $elements); ?>
</td>
<td>
<?php $elements2 = array(); ?>
@foreach($var2->student_registrars[$i] as $category)
<?php $elements2[] = '<a href=" '.route('student-registrars.show', $category->id).' "> '.$category->name.' </a>'; ?>
@endforeach
<?php echo implode(',<br>', $elements2); ?>
</td>
@endforeach
<td>
<a href="{{ route('father-registrars.show', $var->id) }}" class="btn btn-primary btn-sm">Detail</a>
</td>
</tr>
@endforeach
您遇到的问题是没有直接关联 $ data
和 $ dataGM
.您应该尝试使用关系",以便可以从 $ data
中将 $ dataGM
所需的数据作为关系进行访问,例如
The problem you have is that there is no direct association $data
and $dataGM
. You should try and use Relationships so that the data needed for $dataGM
can be accessed as a relationship from $data
, e.g.
$children = $data[$i]->children;
$adopted = $data[$i]->adopted_children;
然后,您可以直接在这些项目上循环,而不必创建多个变量.
Then you can loop directly on these items instead of having to create multiple variables.
这篇关于Laravel通过视图中的2个不同模型嵌套@foreach的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!