首页 > 解决方案 > Laravel 查询以列出结果

问题描述

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

用例

  1. purchased抓住该领域为真的产品集合
  2. 如果集合中的产品的字段includes_bonus设置为 true 列出除bonusid 为 2的产品之外的所有产品

1.

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

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

2 次尝试

下面我尝试执行上述操作,但我运气不佳。

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

  2. 如果产品includes_bonus为 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

标签: laravelif-statementforeach

解决方案


试试这个:

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

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

      $productsPurchased=$productsPurchased->get();

推荐阅读