我的laravel视图中有2个嵌套循环
@foreach ($clubs as $club)
<div class="jumbotron text-center">
<h1>{{$club->nom}}</h1>
</div>
<div class="container">
<div class="row">
<div class="col-sm-12">
<h3>Grupos</h3>
@foreach ($grupos as $grupo)
@if ($grupo->club == $club->id)
<p>
<strong>Nombre: </strong> {{$grupo->nom}} <br>
<strong>Tipo: </strong> Grupo de {{$grupo->tipo}} <br>
<strong>Horario disponible: </strong> {{$grupo->dia}}, {{$grupo->horario}} <br>
</p>
@endif
@endforeach
</div>
</div>
</div>
@endforeach
$ grupos是一个数组,其中包含我的组表中的所有组,我会遍历整个过程并仅在外键俱乐部等于当前正在迭代的当前俱乐部时打印信息。如果没有,则不会打印任何信息,但是我想打印一条消息,指示该迭代过程中未打印任何内容,有什么办法可以做到?
这是我想要的输出的一个例子
ID为1的俱乐部A有5个组
id为2的俱乐部B有0个组
------俱乐部A -------
第1组
第2组
第3组
第4组
第5组
-------俱乐部B -------
这个俱乐部没有团体
答案 0 :(得分:2)
您将需要一些关系才能实现这一目标。此时,$grupos
对于所有俱乐部都是相同的。这是您的最小表结构应如何:
俱乐部
id (BIGINT 20)
name (VARCHAR 255)
组
id (BIGINT 20)
name (VARCHAR 255)
club_id (BIGINT 20)
现在您可以设置模型了:
Club.php
<?php
namespace App;
use Illuminate\Database\Eloquent\Model;
class Club extends Model
{
protected $table = 'clubs';
public function groups () {
return $this->hasMany(Group::class);
}
}
Group.php
<?php
namespace App;
use Illuminate\Database\Eloquent\Model;
class Group extends Model
{
protected $table = 'groups';
public function club () {
return $this->belongsTo(Club::class);
}
}
现在,在加载视图的控制器中,您可以获得所有数据并将其传递给:
ClubController.php
<?php
namespace App\Http\Controllers;
use App\Club;
use Illuminate\Http\Request;
class ClubController extends Controller
{
public function index (Request $request) {
$clubs = Club::with('groups')->get();
return view('clubs', ['clubs' => $clubs]);
}
}
现在,在您的视图中显示球杆:
clubs.blade.php
@foreach($clubs as $club)
<h1>Club: {{ $club->name }}</h1>
@if($club->groups)
<h2>Groups:</h2>
<ul>
@foreach($club->groups as $group)
<li>{{ $group->name }}</li>
@endforeach
</ul>
@else
<h2>This club has no groups.</h2>
@endif
<br>
@endforeach
希望对您有所帮助,并让您更好地了解如何在Laravel中使用关系:)