Il s'agit d'une application de commerce électronique avec des filtres dans lesquels les paramètres sont pris dynamiquement à partir d'une table.Problème lors de la génération d'une requête complexe à partir de plusieurs choix et d'un filtre à paramètres multiples
table "Filtres" ressemble à ce qui suit:
id | groupe | étiquette | valeur
---- + ---------- + ------------------- + ----------- -----
12 | date limite | 1 à 3 jours | 1 ET 3
14 | budget | Tout | 0
15 | budget | Moins de 1000 | 1,1000
16 | budget | 1000 à 10000 | 1000, 10000
22 | emplacement | Tout | 0
23 | emplacement | New York | newyork
24 | emplacement | Californie | californie
25 | emplacement | Alabama | alabama
L'un des paramètres parmi d'autres est: "Budget" et les options de cases à cocher sont:
Tous
1000-9999
10000-99999
100000-999999
Les utilisateurs peuvent vérifier plusieurs options ici.
Je suis en train de construire des requêtes de recherche de façon dynamique à partir de ce filtre: (voir ici https://m.dotdev.co/writing-advanced-eloquent-search-query-filters-de8b6c2598db)
Voir fichier pour les filtres:
@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
Le contrôleur a:
$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);
...
Le Le code ci-dessus ne semble pas fonctionner car il définit toujours min = 0. Quelqu'un peut-il dire comment je peux créer une requête dynamique à partir d'un filtre multi-choix généré dynamiquement? à Laravel?
Merci à l'avance,
Le problème est que les utilisateurs peuvent sélectionner plusieurs cases à la fois. Par exemple, je pourrais choisir deux options comme 1000 à 10000 et 10000 à 100000. Ici, la valeur min devrait être 1000 et max sera 100000. Mais mon problème avec la requête est qu'il est toujours mis à 0, peu importe ce que je sélectionner. Oui, vous avez raison, c'est un problème de codage. Depuis que je suis nouveau à Laravel, je trouve difficile, donc, cherchant de l'aide ici. Appréciez tout matériel en ligne pour obtenir de l'aide. Merci encore. – chuck