laravel plusieurs clauses where dans une boucle
Assez bien je veux la requête pour sélectionner tous les enregistrements d'utilisateurs qui ont 25 ans ET sont, soit entre 150 et 170 cm OU 190-200 cm.
J'ai cette requête écrite vers le bas ci-dessous. Cependant le problème est qu'il ne cesse de 25 ans OU les personnes qui sont 190-200 cm au lieu de 25 ans qui sont 150-170 OU 25 ans que 190-200 cm de haut. Comment puis-je résoudre ce problème? grâce
$heightarray=array(array(150,170),array(190,200));
$user->where('age',25);
for($i=0;$i<count($heightarray);i++){
if($i==0){
$user->whereBetween('height',$heightarray[$i])
}else{
$user->orWhereBetween('height',$heightarray[$i])
}
}
$user->get();
Edit: j'ai essayé avancé wheres (http://laravel.com/docs/queries#advanced-wheres) et il ne fonctionne pas pour moi que je ne peux pas passer le $heightarray paramètre dans la fermeture.
de laravel documentation
DB::table('users')
->where('name', '=', 'John')
->orWhere(function($query)
{
$query->where('votes', '>', 100)
->where('title', '<>', 'Admin');
})
->get();
- Vous avez besoin de faire usage de advance mario.
- J'ai essayé, mais je ne peux pas passer des variables dans les fermetures
- Pouvez-vous poster les avancées où la déclaration que vous avez essayé?
- J'ai fait quelque chose) des nouvelles Jeemusu dans le fond
Vous devez vous connecter pour publier un commentaire.
Comme Jeemusu et l'OP dit, vous devez utiliser l'avance wheres.
Mais si vous voulez passer une variable à la fonction de clôture vous avez besoin de faire usage de la "utilisation" approche:
J'ai trouvé la réponse. J'ai besoin de comprendre "l'utilisation" dans la fermeture de passer mon $heightarray variable. Une fois $heightarray est alors laravel l'avance wheres de travail.
Ce n'est absolument pas testé, mais en regardant la documentation pour l'avance wheres, il semblerait que vous voulez essayer quelque chose comme ceci: