zend-framework
  • select
  • where-clause
  • zend-db-select
  • 2010-12-06 5 views 3 likes 
    3

    Ich habe ein SELECT-Objekt, das ein WHERE enthält.Zend Framework: Wiederverwendung der WHERE-Klausel von Zend_Db_Select :: getPart()

    Ich kann die WHERE zurückkehren getPart(Zend_Db_Select::WHERE) verwenden, gibt diese etwas wie folgt aus:

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

    Dieses Array scheint ziemlich nutzlos, da ich dies nicht mit ihm tun können

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

    oder sogar in eine andere setzen SELECT-Objekt. Gibt es eine Möglichkeit, eine nützlichere Darstellung der WHERE-Anweisung vom SELECT-Objekt zu erhalten?

    Dank

    EDIT

    Das Beste, was ich mit so weit gekommen sind ist

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

    Antwort

    1

    Ihre erste Wahl, $client->update(...) funktionieren würde, wenn getParts weggelassen die ' UND 'aus dem zweiten Teil der Where-Klausel.

    Ich bin mir ziemlich sicher, dass Ihre einzige Wahl ist:

    1. Ihre zweite Option verwenden (wahrscheinlich sicherste je nachdem, wie komplex die where-Klauseln sind) -oder
    2. Iterierte durch den $, wo zurückgegeben und Entfernen Sie das führende 'UND', 'ODER', das möglicherweise vorhanden ist.
    +1

    +1 Danke Darryl. Ich hatte Angst, dass jemand das sagen würde. Ich kann nicht glauben, dass es keine elegantere Lösung dafür gibt. –

    Verwandte Themen