Bastante mucho quiero la consulta para seleccionar todos los registros de los usuarios que son 25 años de edad Y son entre 150-170 cm O 190-200 cm.

Tengo esta consulta escrita abajo. Sin embargo, el problema es que guarda el conseguir de 25 años de edad O de personas que son 190-200 cm en lugar de los 25 años de edad que son 150-170 O 25 años de edad que 190-200 cm de altura. ¿Cómo puedo solucionar este problema? gracias

 $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: he intentado avanzado wheres (http://laravel.com/docs/queries#advanced-wheres) y no funciona para mí, como yo no pase de los $heightarray parámetro en el cierre.

de laravel documentación

 DB::table('users')
        ->where('name', '=', 'John')
        ->orWhere(function($query)
        {
            $query->where('votes', '>', 100)
                  ->where('title', '<>', 'Admin');
        })
        ->get();
  • Usted necesita para hacer uso de adelantado wheres.
  • He intentado pero no puedo pasar variables en los cierres
  • Puedes publicar la avanzada donde declaración de que has intentado?
  • Yo hice algo simliar Jeemusu en la parte inferior
InformationsquelleAutor user1424508 | 2013-10-21

3 Comentarios

  1. 9

    Como Jeemusu y el OP dicho, es necesario utilizar avance wheres.
    Pero si quieres pasar una variable para el cierre de la función que usted necesita para hacer uso de la «uso» enfoque:

    $heightarray = array(array(150,170),array(190,200));
    
    DB::table('users')
      ->where('name', '=', 'John')
      ->orWhere(function($query) use ($heightarray){
        //...
      })
      ->get();
  2. 2

    He encontrado la respuesta. Tengo que incluyen el «uso» en el cierre de pasar mi $heightarray variable. Una vez $heightarray es en laravel avance de wheres trabajo.

    $heightarray=array(array(150,170),array(190,200));
      $user->where('age',25);
    
     $userprofile->Where(function($query) use ($heightarray) {
    
     for($i=0;$i<count($heightarray);i++){
     if($i==0){
     $user->whereBetween('height',$heightarray[$i])
     }else{
     $user->orWhereBetween('height',$heightarray[$i])
      }
    }
    
     });
    
      $user->get();
  3. 0

    Esto es completamente probado, pero mira la documentación de avance wheres, parece quieres probar algo como esto:

    DB::table('users')
    ->where('age',25)
    ->Where(function($query)
    {
        for($i=0;$i<count($heightarray);i++){
           if($i==0){
              $query->whereBetween('height', $heightarray[$i]);
           }else{
              $query->orWhereBetween('height', $heightarray[$i]);
           }
        }
    })->get();
    • He intentado eso pero necesita pasar heightarray en el cierre de lo contrario no sabe de lo que habla

Dejar respuesta

Please enter your comment!
Please enter your name here