筛选产品无法在where查询中正常使用

时间:2018-10-15 13:15:46

标签: php laravel

我有问题,我有代码:

public function attribute()
{
   return $this->hasMany('App\Models\ProductAttribute');
}

public function scopeAttrSearch($query, $ids)
{
   foreach ($ids as $id) {
       $query->whereHas('attribute', function ($q) use ($id) {
           $q->where('attribute_value_id', $id);
       });
}

  return $query;
}

在id中,我从数据库发送values_attributes_id。我有名称为attribute_value的列表复选框。如果具有复选框列表,则选定的产品将按条件过滤。但是如果我从同一类别中选择checkboses,则过滤器通常不会过滤,似乎是有条件的“ where”无法正常工作。

2 个答案:

答案 0 :(得分:0)

foreach不适用于查询,您可以简化代码:

public function scopeAttrSearch($query, $ids)
{
   return $query->whereHas('attribute', function ($q) use ($ids) {
       $q->whereIn('attribute_value_id', $ids);
   });
}

答案 1 :(得分:0)

您可以直接将传入的数组传递给whereIn方法。

<ul>
    <li class="nav-item">
        <a class="nav-link" (click)="BEDropdownOpen = !BEDropdownOpen" [attr.aria-expanded]="BEDropdownOpen" aria-controls="basic-elements-dropdown"   [ngClass]="{'active': rla.isActive}">
            Elements
        </a>
        <div class="collapse" id="basic-elements-dropdown" [ngbCollapse]="!BEDropdownOpen">
            <ul class="nav flex-column sub-menu">
                <li class="nav-item">
                    <a class="nav-link" routerLink="/accordions" routerLinkActive="active" #rla="routerLinkActive">Accordion</a>
                </li>
                <li class="nav-item">
                    <a class="nav-link" routerLink="/typography" routerLinkActive="active" #rla="routerLinkActive" >Typography</a>
                </li>
                <li class="nav-item">
                    <a class="nav-link" routerLink="/tooltips" routerLinkActive="active" #rla="routerLinkActive">Tooltip</a>
                </li>
            </ul>
        </div>
    </li>
</ul>