2016-07-04 5 views
0

Comment exécuter cette requête en utilisant ORM dans FuelPHP:FuelPHP ORM multiples ET, OU requête

SELECT * FROM user when a=1 and b=2 and (c=1 or d=2 or e=3) 

Je ne sais pas comment mettre en œuvre cette partie and (c=1 or d=2 or e=3)

Juste coincé dans:

$where = array() 
$where[] = array('a'=>1,'b'=>2); 

//Adding c,d,e column in $where[] 
    I dont know how to combine AND and OR 

    $query = Model_User::find('all', array(
          'where' => $where 
       ));) 

Y a-t-il un moyen d'accomplir cela?

Remercier à l'avance

Répondre

0

Vous pouvez utiliser where_or comme ceci:

$q = Model_User::find('all', array(
    'where' => array(
    array('a', 1), 
     'and' => array(
      array('b', 2), 
     ), 
    ), 
)); 

ou bien comme celui-ci (que je trouve beaucoup plus facile à lire lors de la sélection:

$q = Model_User::query(); 
$q->where('a', '=', 1); 
$q->and_where('b', '=', 2); 
$q->or_where_open(); 
    $q->where('c', '=', 1); 
    $q->or_where('d', '=', 2); 
    $q->or_where('e', '=', 3); 
$q->or_where_close(); 
0

Vous pouvez également en faire usage de cette manière ou jeter un oeil à ce lien pour plus de lumière
Query builder Where - Classes FuelPHP documentation

//this should be done within the model that you wish to deal with 
$query = DB::select("*"); 
$query->from->("user"); 
$query->where("a","=","1"); 
$query->and_where("b","=","2"); 
$query->where(function($query){ 
$query->where("c","=","1"); 
$query->or_where("d","=","2"); 
$query->or_where("e","=","3"); 
}); 
$query->execute(); 
0

Vous pouvez enchaîner, si cela est encore plus lisible:

$q = Model_User::query() 
    ->where('a', '=', 1) 
    ->and_where('b', '=', 2) 
    ->or_where_open() 
     ->where('c', '=', 1) 
     ->or_where('d', '=', 2) 
     ->or_where('e', '=', 3) 
    ->or_where_close(); 

Si vous souhaitez utiliser des requêtes DB pour la performance, mais ont encore besoin d'objets de modèle ORM comme résultat, vous pouvez utiliser as_object(), voir http://fuelphp.com/docs/packages/orm/crud.html#/custom_sql