2008-09-17 15 views
0

Ich versuche Zend_Db_Select zu verwenden, um eine SELECT-Abfrage zu schreiben, die ein wenig wie folgt aussieht:Zend Framework Select Operator Präzedenz

SELECT * FROM bar WHERE a = 1 AND (b = 2 OR b = 3) 

Wenn jedoch mit einer Kombination aus dem() und orWhere(), es scheint unmöglich, Verwenden Sie die Bedingung Gruppierung wie oben.

Gibt es nativen Möglichkeiten in Zend Framework das obige zu erreichen (ohne die eigentliche Abfrage zu schreiben?)

Antwort

2

Von the manual (Beispiel 11.61. Beispiel einklammern von Booleschen Ausdrücken)


// Build this query: 
// SELECT product_id, product_name, price 
// FROM "products" 
// WHERE (price < 100.00 OR price > 500.00) 
//  AND (product_name = 'Apple') 

$minimumPrice = 100; 
$maximumPrice = 500; 
$prod = 'Apple'; 

$select = $db->select() 
      ->from('products', 
        array('product_id', 'product_name', 'price')) 
      ->where("price < $minimumPrice OR price > $maximumPrice") 
      ->where('product_name = ?', $prod); 

0

Die obige Referenz ist großartig, aber was ist, wenn Sie mit Saiten spielen?

Hier würde das obige Beispiel mit Streichern ...

// Build this query: 
// SELECT product_id, product_name, price 
// FROM "products" 
// WHERE (product_name = 'Bananas' OR product_name = 'Apples') 
//  AND (price = 100) 

$name1 = 'Bananas'; 

$name2 = 'Apples'; 

$price = 100; 

$select = $db->select() 

->from('products', 
        array('product_id', 'product_name', 'price')) 

->where("product_name = '" . $name1 . "' OR product_name = '" . $name2 . "'") 

->where("price=?", $price); 

Ich hoffe, das hilft. Hat mich ein bisschen herumalbern lassen, damit die Saiten richtig funktionieren.

Prost.

+0

Danke für Ihre Antwort, ich schätze es. –