2009-06-21 12 views
7

Tengo el siguiente códigozend no usar columnas, y la selección de todo lo

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

Sin embargo, cuando lo ejecuto, se selecciona toda la fila, no sólo la columna que quería. Aquí está la salida de __toString

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

Cualquier ayuda?

Respuesta

10

El método columns() es para añadir columnas a una existente de o unen. La forma correcta de construir su consulta es:

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

es necesario especificar las columnas que desea como el segundo parámetro para el método de(), como una cadena si es sólo una columna, o como una matriz para columnas múltiples Desde el Zend_Db_Select docs:

En el segundo argumento de la de() método, puede especificar las columnas a SELECT de la tabla respectiva. Si no especifica ninguna columna, el valor predeterminado es "*", el comodín de SQL para "todas las columnas ".

Se pueden listar las columnas de una forma sencilla matriz de cadenas, o como asociativo asignación de alias de columna a columna de nombre . Si solo tiene una consulta de columna a , y no necesita especificar un alias de columna , puede listarla como una cadena simple en lugar de una matriz.

+0

Esto es bueno saberlo (!) Ya que la [documentación] (http://framework.zend.com/apidoc/1.9/Zend_Db/Select/Zend_Db_Select.html#columns) no menciona la parte sobre _adding_ columns : "Especifica las columnas utilizadas en la cláusula FROM". – WoodrowShigeru

4

Si ya tiene el objeto de selección (significa el from() se llamaba antes), se debe utilizar $select->reset(Zend_Db_Select::COLUMNS); y luego llamar columns() como lo hace en el ejemplo.

Cuestiones relacionadas