2009-06-21 9 views
7

Ich habe den Code folgendezend nicht Spalten verwenden, und wählen Sie alles

$result = $handle->select()->from('store_details') 
           ->where('store_details.store_id=?', $id) 
           ->columns('store_details.store_name'); 
           //->query(ZEND_DB::FETCH_OBJ); 

Allerdings, wenn ich es laufen, wird die gesamte Zeile ausgewählt ist, nicht nur die Spalte ich wollte. Hier ist die Ausgabe von __toString

SELECT `store_details`.*, `store_details`.`store_name` 
FROM `store_details` WHERE (store_details.store_id=8) 

Jede Hilfe?

Antwort

10

columns() Die Methode ist für das Hinzufügen Spalten zu einem bestehenden aus oder verbinden. Der richtige Weg, um Ihre Abfrage zu erstellen ist:

$result = $handle->select()->from('store_details','store_details.store_name')->where('store_details.store_id=?', $id); 

Sie müssen die Spalten Sie als zweiten Parameter an dem von() -Methode als String angeben, ob es nur eine Spalte ist, oder als Array für mehrere Spalten. Vom Zend_Db_Select docs:

Im zweiten Argument der von() Methode können Sie die Spalten wählen Sie aus der jeweiligen Tabelle angeben. Wenn Sie keine Spalten angeben, ist der Standardwert "*", der SQL-Platzhalter für "alle Spalten".

Sie können die Spalten in einer einfachen Array von Strings oder als assoziativer Zuordnung der Spalte Alias ​​Spalte Namen. Wenn Sie nur eine Spalte mit der Abfrage haben und keinen Spaltenalias angeben müssen, können Sie ihn als einfache Zeichenfolge anstelle eines Arrays auflisten.

+0

Dies ist gut zu wissen (!) Da die [Dokumentation] (http://framework.zend.com/apidoc/1.9/Zend_Db/Select/Zend_Db_Select.html#columns) den Teil über _Adding_ Spalten nicht erwähnt : "Gibt die Spalten an, die in der FROM-Klausel verwendet werden." – WoodrowShigeru

4

Wenn Sie bereits das Objekt auswählen haben (bedeutet die from() wurde vor genannt), sollten Sie $select->reset(Zend_Db_Select::COLUMNS); verwenden und dann columns() nennen, wie Sie im Beispiel zu tun.

Verwandte Themen