Comment ajouter des parenthèses autour de l'endroit OÙ les conditions avec Laravel générateur de requêtes
Je suis en utilisant le Laravel générateur de requête pour filtrer dynamiquement les données en fonction de l'utilisateur sélections de filtre:
$query = DB::table('readings');
foreach ($selections as $selection) {
$query->orWhere('id', $selection);
}
$query->whereBetween('date', array($from, $to));
$query->groupBy('id');
Lorsque j'examine le SQL, j'obtiens quelque chose comme ceci:
select count(*) as `count` from `readings` where `id` = 1 or id` = 2 and `date` between "2013-09-01" and "2013-09-31" group by `id`;
Mais ce dont j'ai besoin est quelque chose comme ceci (avec les crochets autour de la ou des déclarations):
select count(*) as `count` from `readings` where (`id` = 1 or id` = 2) and `date` between "2013-09-01" and "2013-09-31" group by `id`;
Comment puis-je ajouter des parenthèses autour de l'endroit OÙ les conditions avec Laravel générateur de requêtes?
Vous devez vous connecter pour publier un commentaire.
Très utile, j'utilise ceci:
Résolu ce problème par moi-même à l'aide d'une fermeture, comme décrit dans Paramètre De Regroupement dans le générateur de requêtes de la documentation.
$selection
. Peut-être qu'ils ne si les identifiants sont vides, je ne suis pas sûr. Je suppose que cela dépend de ce que vous voulez arriver si il n'y a pas id pour la sélectionner. En tout cas, le tien est le plus général, de répondre à la question dans le titre.Je ne pouvais pas le trouver dans la documentation,
whereNested
était ce que je cherchais. Espérons que cela aide quelqu'un.Note: Ce qui est sur Laravel 4.2
Vous pouvez utiliser
WHERE IN
ici pour le même effet: