【问题标题】:How to only show all articles that contains a particular value?如何仅显示包含特定值的所有文章?
【发布时间】:2021-11-26 05:41:53
【问题描述】:

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

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

在我的刀片视图文件中,我有一个 @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

【问题讨论】:

标签: php laravel laravel-blade


【解决方案1】:

在循环之前将逻辑移动到控制器/服务,然后将必要的行发送到您的刀片(可能在数组/对象中使用 $is_reserved 布尔值)

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

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

例如

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

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

【讨论】:

  • 我已经尝试在我的@foreach 行之后执行 if 条件,现在它可以工作了。谢谢回答! :)
猜你喜欢
  • 2020-07-31
  • 2014-12-08
  • 1970-01-01
  • 2013-08-10
  • 2012-01-01
  • 2015-10-29
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多