2009-06-21 2 views
7

Ho il codicezend non utilizzando colonne, e selezionando tutto

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

Tuttavia seguente, quando l'eseguo, viene selezionata l'intera riga, non solo la colonna volevo. Ecco l'output __toString

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

Qualsiasi aiuto?

risposta

10

Il metodo columns() è per aggiunta colonna ad un esistente da o join. Il modo corretto per costruire la vostra domanda è:

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

È necessario specificare le colonne che si desidera come secondo parametro al metodo da(), come una stringa se è solo una colonna, o come un array per più colonne. Dal Zend_Db_Select docs:

Nel secondo argomento del da() metodo, è possibile specificare le colonne da selezionare dalla relativa tabella. Se non si specifica alcuna colonna, il valore predefinito è "*", il carattere jolly SQL per "tutte le colonne ".

è possibile elencare le colonne in un semplice array di stringhe, o come associativa mappatura dei alias colonna a colonna nome. Se si dispone di una sola colonna a query e non è necessario specificare un alias colonna, è possibile elencare come una stringa pianura invece di un array.

+0

È utile sapere (!) Poiché la [documentazione] (http://framework.zend.com/apidoc/1.9/Zend_Db/Select/Zend_Db_Select.html#columns) non menziona la parte relativa alle colonne _adding_ : "Specifica le colonne utilizzate nella clausola FROM." – WoodrowShigeru

4

Se avete già l'oggetto di selezione (indica la from() si chiamava prima), si dovrebbe usare $select->reset(Zend_Db_Select::COLUMNS); e quindi chiamare columns() come si fa l'esempio.