2009-06-21 1 views
7

я следующий кодЗенд не используя столбцы, и выбрать все

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

Однако, когда я запускаю его, выбирается вся строка, а не только колонки я хотел. Вот выход из __toString

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

Любая помощь?

ответ

10

Метод columns() для добавления столбцов в существующем из или присоединиться к. Правильный способ построения запроса является:

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

Вы должны указать столбцы, которые вы хотите в качестве второго параметра метода с() в виде строки, если это только один столбец, или в качестве массива для несколько столбцов. Из Zend_Db_Select docs:

Во втором аргументе из() метода, вы можете задавать столбцы для выберите из соответствующей таблицы. Если вы не указываете столбцы, по умолчанию используется «*», подстановочный знак SQL для «всех столбцов ».

Вы можете перечислить столбцы в простом массиве строк или в ассоциативном отображения псевдонима столбца для столбца имени. Если у вас есть только один столбец для запроса , и вам не нужно указывать псевдоним столбца , вы можете перечислить его как обычную строку вместо массива.

+0

Это полезно знать (!), Поскольку [документация] (http://framework.zend.com/apidoc/1.9/Zend_Db/Select/Zend_Db_Select.html#columns) не упоминает о столбцах _adding_ : «Указывает столбцы, используемые в предложении FROM». – WoodrowShigeru

4

Если у вас уже есть выберите объект (значит from() называлась раньше), вы должны использовать $select->reset(Zend_Db_Select::COLUMNS); и затем вызвать columns(), как вы делаете в примере.