28 votes

Regrouper les clauses Où avec Zend_Db_Table_Abstract

Quelqu'un sait-il qu'il s'est vu un moyen de regrouper les clauses avec Zend_Db? Fondamentalement, j'ai cette requête

Ce qui me donne ceci:

Mais j'en ai besoin pour me donner ceci, où la déclaration de ou d'une personne est regroupée :

47voto

jason Points 6518

Afin de réaliser cela, vous avez à construire groupé de la clause à l'intérieur d'un seul appel à l' where méthode.

Si les deux valeurs de conditions sont les mêmes, vous pouvez faire ceci:

$select->where('client_email = ? OR client_email_alt = ?', $client_email)

S'il y a plusieurs espaces réservés au sein de la chaîne, la DB de l'adaptateur quoteInto méthode va remplacer tous les espaces réservés à la valeur fournie.

Si vous avez besoin de regrouper un OR avec des valeurs différentes pour chaque champ, vous devez manuellement citer les valeurs. C'est un peu plus complexe:

$select->where(
    $db->quoteInto('client_email = ?', $email1) . ' OR ' . $db->quoteInto('client_email_alt = ?', $email2)
); // $db is your instance of Zend_Db_Adapter_*
   // You can get it from a Zend_Db_Table_Abstract 
   //subclass by calling its getAdapter() method

5voto

Volvox Points 859

Vous pouvez utiliser `` pour obtenir l'instruction Où, puis connecter les sous-requêtes.

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X