2009-06-21 8 views
7

Mam następujący kodzend nie stosując kolumny i wybierając wszystko

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

Jednak, kiedy go uruchomić, cały wiersz jest wybrany, a nie tylko kolumnę chciałem. Tutaj jest wyjście z __toString

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

Każda pomoc?

Odpowiedz

10

Sposób columns() jest dodanie kolumny do istniejącej od lub dołączyć. Prawidłowy sposób zbudować zapytanie brzmi:

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

musisz określić kolumny, które mają jako drugi parametr metody from(), jako ciąg znaków, jeśli jest to tylko jedna kolumna, lub jako tablica do wiele kolumn. Z Zend_Db_Select docs:

W drugim argumencie od() metodzie można określić kolumny do wybierz z odpowiedniej tabeli. Jeśli nie zostanie określona żadna kolumna, wartością domyślną będzie "*", symbol wieloznaczny SQL dla "wszystkich kolumn ".

Można wymienić kolumny w prosty tablicę łańcuchów lub jako asocjacyjnej mapowania kolumny do kolumny alias nazwy. Jeśli masz tylko jedną kolumnę dla zapytania i nie musisz określać aliasu kolumny , możesz go podać jako zwykły ciąg znaków zamiast tablicy.

+0

Dobrze wiedzieć (!), Ponieważ [dokumentacja] (http://framework.zend.com/apidoc/1.9/Zend_Db/Select/Zend_Db_Select.html#columns) nie wspomina części o _adding_ columns : "Określa kolumny używane w klauzuli FROM." – WoodrowShigeru

4

Jeśli masz już wybierz obiekt (oznacza from() nazwano wcześniej), należy użyć $select->reset(Zend_Db_Select::COLUMNS); a następnie zadzwonić columns() tak jak w przykładzie.