2012-08-29 5 views

Antwort

3

Mit Zend_Db_Select können Sie es in der schönen Art und Weise nicht, so empfehle ich Ihnen einfache Abfrage zu verwenden:

$q = "WITH t ..." 
$db->fetchAll($q); 
0

I quote-

Mit Zend_Db_Select nicht zwingend erforderlich ist. Bei sehr einfachen SELECT-Abfragen ist es normalerweise einfacher, die gesamte SQL-Abfrage als Zeichenfolge anzugeben und mit Adaptermethoden wie query() oder fetchAll() auszuführen. Verwendung von Zend_Db_Select ist hilfreich, wenn Sie eine SELECT-Abfrage prozedural oder basierend auf bedingte Logik in Ihrer Anwendung zusammenstellen müssen.

So können Sie versuchen, diese

$wthselect = 'WITH t AS 
      (SELECT item_id, row_number() OVER (ORDER BY some_criteria DESC) rn 
       FROM orders) 
     SELECT t2.rn, t2.item_id 
      FROM t t1 JOIN t t2 ON (t2.rn > t1.rn) 
      WHERE t1.item_id = 145'; 

$stmt = $select->query($wthselect); 
$result = $stmt->fetchAll(); 
0

Die Zend_Db_Select nützlich ist, wenn die Abfrage etwas kompliziert ist, mit Parametern und Logik in der Anwendung enthalten, wie bereits auf eine andere Antwort zitiert. Eine detaillierte Beschreibung dieser Anleitung finden Sie unter official Zend Framework.

Überprüfen Sie auch this useful link von der Zend Framework-Community, speziell this post. Es zeigt deutlich, dass für kleine und unkomplizierte Abfragen, wie die, die Sie gepostet haben, es einfacher ist, die fetchAll() oder query() Anweisungen zu verwenden.

Also, mein Rat, verwenden Sie die fetchAll() oder query() für Ihren Fall.