Предложение заказа с предложением "как" в Zend DB
Запрос:
select * from table_name ORDER BY name like 'C%' DESC;
Этот запрос отлично работает в MySql, но я не могу построить запрос с использованием Zend DB. Я получаю ошибку при выполнении.
Код БД PHP:
$result = $this->getDefaultAdapter()
->select()
->from($this->_name,array('*'))
->order("name like 'C%' DESC")
->query()
->fetchAll();
Ошибка:
Столбец не найден: 1054 Неизвестный столбец 'name like 'C%'' в 'order order'
заранее спасибо
2 ответа
Zend_Db_Select пытается разделить строки как имена столбцов, но пропускает это, если вы передаете объект типа Zend_Db_Expr вместо строки:
->order(new Zend_Db_Expr("name like 'C%' DESC"))->
Существует также недокументированное сокращение: функция разделения столбцов предполагает, что любая строка, содержащая скобки, скорее всего, будет выражением, а не просто именем столбца. Таким образом, будет работать следующее:
->order( "(name like 'C%' DESC)" )->
Я не знаком с Zend, но попробуйте переписать ваш SQL-запрос в Zend, как это
select *, (`name` like 'C%') as theFiled from table_name by theFiled desc;
Хотя я не уверен, что, думаю, Zend Code должен быть примерно таким,
$result = $this->getDefaultAdapter() ->select()
->from($this->_name,array('*', "theFiled" => "name like 'C%'") ->order("theFiled DESC")
->query() ->fetchAll();