Я работаю над cakephp 1.3. Я нахожу проблему в кодировке символов. У меня есть две ключевые Ключевое слово и Группа , так что Ключевое слово принадлежит группе. Я пытаюсь выполнить полный текстовый запрос в ключевом ключе модели.
function geParentKeyword($keyword) { //$keyword = *Acupuncturist*; Assuming this as input $match = html_entity_decode("MATCH(Keyword.keyword) AGAINST (\"".trim($keyword)."\" IN BOOLEAN MODE)" ); return $this->find('first', array('fields' =>array('Group.name'), 'conditions' =>array($match) )); }
Я получил неправильные результаты с этим запросом. Я отлаживаю запрос, и я получил это
SELECT `Group`.`name` FROM `keywords` AS `Keyword` LEFT JOIN `groups` AS `Group` ON (`Keyword`.`group_id` = `Group`.`id`) WHERE MATCH(`Keyword`.`keyword`) AGAINST ("*Acupuncturist*" IN BOOLEAN MODE) LIMIT 1"
Запрос совершенный, но здесь проблема заключается в $ match cake, преобразует двойные кавычки в "
Я пробовал с html_entity_decode и str_replace (), но они показывают тот же запрос.
Больше подробностей.
core.php
Configure::write('App.encoding', 'UTF-8');
database.php
var $default = array( …. 'encoding' => 'UTF8', );
Ожидаемый результат
MATCH(Keyword.keyword) AGAINST (' *Acupuncturist* ' IN BOOLEAN MODE)
Пожалуйста, расскажите мне, в чем проблема. Заранее спасибо.
Вы попробовали это?
$match = "MATCH(Keyword.keyword) AGAINST ('".trim($keyword)."' IN BOOLEAN MODE)";
Пытаться
$match = 'MATCH(Keyword.keyword) AGAINST (\''. html_entity_decode(trim($keyword)) .'\' IN BOOLEAN MODE)';
Я решаю это сам.
Это было из-за режима отладки, я отключил режим отладки. Он работает только
Configure::write('debug', 0);