【问题标题】:Laravel query to list resultsLaravel 查询以列出结果
【发布时间】:2021-02-23 15:02:31
【问题描述】:

我正在尝试编写一个查询,该查询获取一组记录并循环遍历它们并将它们全部显示,但如果一条记录包含一个字段为真,我需要它来隐藏特定记录。

用例

  1. 获取purchased 字段为真的产品集合
  2. 如果集合中的产品将字段 includes_bonus 设置为 true,则列出除 ID 为 2 的 bonus 产品之外的所有产品

1.

这会抓取所有已购买设置为 true 的产品

$productsPurchased = $user->products()->where('purchased', 1)->get();

2 次尝试

下面我试图做上面的事情,但我运气不好。

  1. 获取所有已购买设置为 1(true) 的产品

  2. if product includes_bonus as 1(true) 从产品列表中隐藏 id 为 2 的产品记录。

    $productsPurchased = $user->products()->where('purchased', 1)
        ->where('includes_bonus', 1)
        ->where('products.id', '!==', 2)
        ->get();
    

刀片

然后我想在刀片中做一个 foreach 列出我的用例的所有产品。

   @foreach($purchasedProducts as $purchasedProduct)
                <div class="col-xl-6 p-0 p-xl-4 mb-5 mb-xl-0">
                        <div class="card border">
                            <div class="card-header border rounded-top"
                               </div>
                            <div class="card-block">
  @endforeach

【问题讨论】:

    标签: laravel if-statement foreach


    【解决方案1】:

    试试“过滤器”集合

    $productsPurchased->filter(function ($value, $key) {
    return '**condition for filter**';
    

    });

    【讨论】:

    • 我将如何调整返回条件中的语法以匹配我的需要?
    • $productsPurchased->filter(function($value) { return !empty($value); }) 过滤器本身去除空值,我只是对它做参考。
    • 显示您的回复以及您想从该回复中删除的内容。
    • 我想做 if($productPurchased->includes_bonus) { // 过滤掉产品,例如 (benefits.id, !=, 2) }
    • 我基本上只是想获取集合,如果记录的 includes_bonus 为真,则从集合中删除 product 2
    【解决方案2】:

    试试这个:

          $productsPurchased = $user->products()->where('purchased', 1);
    
          if($user->products()->where('includes_bonus', 1)->first()){
                $productsPurchased=$productsPurchased->where('products.id', '!=', 2);
          }
    
          $productsPurchased=$productsPurchased->get();
    

    【讨论】:

    • $productsPurchased=$productsPurchased 语法不正确您介意修改答案吗?
    • $productsPurchased=$productsPurchased-&gt;get(); 不是$productsPurchased=$productsPurchased 没关系,我以前用过这个
    猜你喜欢
    • 1970-01-01
    • 2019-12-06
    • 1970-01-01
    • 1970-01-01
    • 2020-12-31
    • 2019-02-05
    • 2018-10-22
    • 2019-11-27
    • 1970-01-01
    相关资源
    最近更新 更多