如何只显示包含特定值的所有文章?

How to only show all articles that contains a particular value?

目前使用 Laravel 8,我必须在页面上显示所有文章,但只显示在我的数据库中包含特定行值的文章。例如,在这一个中,我在所需的 table 中有一列称为“is_reserved”,因为 TinyInt 充当真或假 (1-0)。

我到处都搜索过,但我无法理解也找不到正确的过滤语法,只能显示未保留的文章 (is_reserved = 0)。

在我的 blade 视图文件中,我有一个 @foreach 循环,它从我的控制器中获取我的项目,如下所示。顺便说一句,这不是我想要的方式。我没主意了。

TL:DR: 我只想显示我数据库中的所有项目,但只显示具有特定行值的项目。

<section class="row justify-content-evenly mt-5 mx-sm-3">
    @foreach ($donations as $donation)
    <article class="box col-md-5 col-sm-12 row p-3 mt-md-3 mt-sm-5 d-flex justify-content-around">
        <img src="{{ $donation->image }}" alt="image" class="col" style="border-radius: 100%;">
        <div class="col">
            <p style="text-align: justify;">{{ Str::limit($donation->description, 80) }}</p>
            <div class="d-flex justify-content-start flex-column text-left" style="width: auto; height: 100px;">
                <h5>Location: Quebec</h5>
                <p>Meteo: Cold</p>
                <div class="row justify-content-between">

                    <button class="col-5 btn yellowBtn">reserve</button>
                    <a class="col-5 btn greenBtn" href="{{route('view-item', $donation->id)}}">View</a>

                </div>
            </div>
        </div>
    </article>
    @endforeach

在遍历它们之前将逻辑移动到控制器/服务,然后将必要的行发送到您的 blade(可能在 array/object 中使用 $is_reserved 布尔值)

请记住,如果您要深入研究 blade / 模板文件本身的逻辑,最好将其后退一步,只为模板提供尽可能简单的数据。

以您的问题为例,将行发送到模板之前,只显示符合您需要的行。

例如

$rows = DB::table('your_table')->where('is_reserved', '1')->get();
return $rows; //or extend your template here

否则,您可以在模板中添加一个 @if 条件,并且仅在满足特定条件时才呈现