2010-12-06 65 views
3

J'ai un objet SELECT qui contient un WHERE.Zend Framework: Réutilisation de la clause WHERE retournée par Zend_Db_Select :: getPart()

Je peux retourner WHERE en utilisant getPart(Zend_Db_Select::WHERE), retourne quelque chose comme ceci:

array 
    0 => string "(clienttype = 'agent')" 
    1 => string "AND (nextpayment < (NOW() - INTERVAL 1 DAY))" 

Ce tableau semble assez inutile que je ne peux pas le faire avec elle

$client->update(array("paymentstatus" => "lapsed"), $where); 

Ou même le mettre dans une autre SELECT objet. Est-il possible d'obtenir une représentation plus utile de l'instruction WHERE à partir de l'objet SELECT?

Merci

EDIT

Le meilleur que je suis venu avec à ce jour est

$where = new Zend_Db_Expr(implode(" ", $select->getPart(Zend_Db_Select::WHERE))); 

Répondre

1

Votre première choix, $client->update(...) fonctionnerait, si getParts omis le ' ET 'de la deuxième partie de la clause where.

Je suis assez sûr que votre seul choix est de:

  1. utiliser votre deuxième option (probablement la plus sûre en fonction de la complexité de l'où les clauses sont) -ou-
  2. itérer à travers le $ retourné et où supprimez les 'ET', 'OU' qui peuvent exister.
+1

+1 Merci Darryl. J'avais peur que quelqu'un dise ça. Je ne peux pas croire qu'il n'y a pas de solution plus élégante à cela. –