微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

Laravel查询以列出结果

如何解决Laravel查询以列出结果

我正在尝试编写一个查询,该查询需要一组记录并循环遍历它们并显示所有记录,但是如果一条记录包含一个真实字段,我需要它隐藏特定记录。

用例

  1. 抢占purchased字段为真的产品
  2. 如果该集合中的某个产品的字段includes_bonus设置为true,则列出{id}为2的bonus产品之外的所有产品

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

解决方法

尝试“过滤器”集合

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

});

,

尝试以下方法:

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

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

      $productsPurchased=$productsPurchased->get();

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。