Мы создали приложение против Zend Framework 1.12.7 - один из наших разработчиков установил несколько более новую версию (1.12.9), а поведение Zend_Db_Table_Select (или Zend_Db_Select) немного изменился и нарушает один из наших поисков.Выбрать с помощью MATCH AGAINST перерывов в новой Zend Framework
В частности, у нас было:
$select->from("search", array(
"*",
"bodyScore" => $dbAdapter->quoteInto("MATCH(body) AGAINST (?)", $search),
"headingsScore" => $dbAdapter->quoteInto("MATCH(headings) AGAINST (?)", $search),
"titleScore" => $dbAdapter->quoteInto("MATCH(title) AGAINST (?)", $search),
));
$ поиск строка, $ выберите это Zend_Db_Table_Select и $ dbAdapter является Zend_Db_Adapter_Pdo_Mysql
В 1.12.7, это будет генерировать следующий запрос:
SELECT
`search`.*,
MATCH(body) AGAINST ('neoral') AS `bodyScore`,
MATCH(headings) AGAINST ('neoral') AS `headingsScore`,
MATCH(title) AGAINST ('neoral') AS `titleScore` FROM `search` ...
В 1.12.9, он генерирует: ВЫБОР search
*, .. MATCH(body) AGAINST ('neoral')
AS bodyScore
, search
. MATCH(headings) AGAINST ('neoral')
AS headingsScore
, search
. MATCH(title) AGAINST ('neoral')
AS titleScore
ОТ search
...
Я понимаю принцип, лежащий в основе этого, и что это более правильный синтаксис в целом. Однако для этого конкретного запроса он выводит столбец MATCH(body) AGAINST ('neoral')
, который не найден в ошибках «field_list».
Что будет (надеюсь, более правильным способом) построить мой запрос так, чтобы он работал в 1.12.9?