Zend не используя столбцы, а выбирая все - PullRequest
7 голосов
/ 21 июня 2009

У меня есть следующий код

$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)

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

Ответы [ 2 ]

10 голосов
/ 21 июня 2009

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

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

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

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

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

4 голосов
/ 22 июня 2009

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

...