它是一个电子商务应用程序,具有从表中动态获取参数的过滤器。
“过滤器”表如下所示:
编号 | 集团 | 标签 | 值
----+----------+---------+------------- ---
12 | 截止日期 | 1 至 3 天 | 1 和 3
14 | 预算| 任意 | 0
15 | 预算| 少于 1000 | 1,1000
16 | 预算| 1000 到 10000 | 1000, 10000
22 | 位置 | 任意 | 0
23 | 位置 | 纽约 | 纽约
24 | 位置 | 加利福尼亚 | 加利福尼亚州
25 | 位置 | 阿拉巴马州 | 阿拉巴马州
许多参数之一是:“预算”,复选框选项是:
全部
1000 至 9999
10000 至 99999
100000 至 999999
用户可以在此处检查多个选项。
我正在尝试从此过滤器动态构建搜索查询:(请参阅此处https://m.dotdev.co/writing-advanced-eloquent-search-query-filters-de8b6c2598db)
查看过滤器文件:
@foreach ($groups as $group => $filters)
<div class="panel panel-default">
<b>{{ $group }}</b>
@foreach($filters as $filter)
<div id="collapseOne1" class="panel-collapse collapse in">
<div class="panel-body">
<div class="checkbox">
<label><input class="
<?php if ($filter->value == '0') { ?>
{{ $filter->group }}
<?php } else { ?>
{{ $filter->group."Child" }}
<?php }?>" type="checkbox" name="{{ $filter->group }}" value="{{ $filter->value }}">{{ $filter->label }}</label>
</div>
</div>
</div>
@endforeach
</div>
@endforeach
控制器具有:
$requests = $requests->newQuery();
if ($request->has('budget')) {
foreach (explode(',',$request->budget) as $budget) {
$min = 0;
$max = 1;
if($budget < $min){
$min = $budget;
}
if($budget > $max){
$max = $budget;
}
}
$requests->whereBetween('budget',[$min, $max]);
}
$requests = $requests->paginate(5);
...
上面的代码似乎不起作用,因为它总是设置 min = 0。有人能告诉我如何从 Laravel 中动态生成的多选过滤器创建动态查询吗?
提前致谢,