如何在 table 中使用 belongsToMany 关系循环模型? Laravel Blade

How to loop a model with it's belongsToMany relation in a table? Laravel Blade

我想在 table 中循环我的包(每个包与测试模型都有 belongsToMany 关系)& 我不知道如何在我的 blade 中循环?

public function tests()
{
 return $this->belongsToMany('App\Models\Test');
}

这是我的完整 table (blade):

<table>
    <thead>
        <tr>
            <th></th>
            <th><span>Child</span></th>
            <th>Women</th>
            <th>Men</th>
            <th>Athletes</th>
            <th>VIP</th>
        </tr>
    </thead>
    <tbody>
        <tr>
            <td class="title"><b>TestOne</b></td>
            <td><i class="fa-solid fa-check"></i></td>
            <td><i class="fa-solid fa-check"></i></td>
            <td></td>
            <td></td>
            <td></td>
        </tr>
        <tr>
            <td class="title"><b>TestTwo</b></td>
            <td></td>
            <td></td>
            <td><i class="fa-solid fa-check"></i></td>
            <td></td>
            <td><i class="fa-solid fa-check"></i></td>
        </tr>
        <tr>
            <td class="title"><b>TestThree</b></td>
            <td></td>
            <td><i class="fa-solid fa-check"></i></td>
            <td></td>
            <td></td>
            <td></td>
        </tr>
        <tr>
            <td class="title"><b>TestFour</b></td>
            <td><i class="fa-solid fa-check"></i></td>
            <td><i class="fa-solid fa-check"></i></td>
            <td></td>
            <td><i class="fa-solid fa-check"></i></td>
            <td></td>
        </tr>
        <tr>
            <td class="title"><b>TestFive</b></td>
            <td><i class="fa-solid fa-check"></i></td>
            <td><i class="fa-solid fa-check"></i></td>
            <td><i class="fa-solid fa-check"></i></td>
            <td><i class="fa-solid fa-check"></i></td>
            <td></td>
            <td></td>
        </tr>
        <tr>
            <td class="title"><b>TestSix</b></td>
            <td></td>
            <td><i class="fa-solid fa-check"></i></td>
            <td><i class="fa-solid fa-check"></i></td>
            <td><i class="fa-solid fa-check"></i></td>
            <td><i class="fa-solid fa-check"></i></td>
        </tr>
    </tbody>
</table>

每个 <i class="fa-solid fa-check"> 显示枢轴 table 之间的一行 设计是:

如何在我的 blde 中使用关系循环这个模型?

如果你真的把你的模型列表发送到视图,你可以像这样使用blade directives(这只是一个模拟模型,我不知道你的模型实际是什么样子):

<table>
    <thead>
    <tr>
        <th></th>
        <th><span>Child</span></th>
        <th>Women</th>
        <th>Men</th>
        <th>Athletes</th>
        <th>VIP</th>
    </tr>
    </thead>
    <tbody>
    @foreach($models as $model)
        <tr>
            <td class="title">
                <b>
                    {{ $model->title }}
                </b>
            </td>
            <td>
                @if ($model->is_child)
                    <i class="fa-solid fa-check"></i>
                @endif
            </td>
            <td>
                @if ($model->is_women)
                    <i class="fa-solid fa-check"></i>
                @endif
            </td>
            <td>
                @if ($model->is_men)
                    <i class="fa-solid fa-check"></i>
                @endif</td>
            <td>
                @if ($model->is_athletes)
                    <i class="fa-solid fa-check"></i>
                @endif
            </td>
            <td>
                @if ($model->is_vip)
                    <i class="fa-solid fa-check"></i>
                @endif
            </td>
        </tr>
    @endforeach
    </tbody>
</table>

@if 条件只是我的猜测。把你需要的任何东西弄清楚 fa-check 是否应该被渲染。

通常发送数据是为了查看这样的内容:

$data['models'] = MyModel::all();
return view('myView', $data);

然后您可以在您的视图中访问变量 $models

我通过检查关系以这种方式创建我的table:

<table>
    <thead>
        <tr>
            <th class="tr" width="150"></th>
            @foreach ($data['packages'] as $item)
                <th>{{$item->title}}</th>
            @endforeach
        </tr>
    </thead>
    <tbody>
        @foreach ($data['tests'] as $item)
            <tr>
                <td class="title"><b>{{$item->title}}</b></td>
                @foreach ($data['packages'] as $pack)
                    @if($item->packages->contains($pack->id))
                        <td><i class="fa-solid fa-check"></i></td>
                    @else
                        <td></td>
                    @endif
                    
                @endforeach
            </tr>
        @endforeach
    </tbody>
</table>