2016-03-11 3 views
0

ОК, конечно, там должен быть способ сделать этот код работатьMagento Запятой Ломать Запрос

->addExpressionFieldToSelect(
      'learn_about_us', 
      '(SELECT SUBSTRING_INDEX(SUBSTRING_INDEX(p.fields,";",2),":",-1) FROM plugincompany_contactforms_entry p WHERE main_table.entity_id = p.entity_id)' 
     ); 

по какой-либо причине, что проклятая точка с запятой ломая вещи. Я хочу его там, потому что занимаюсь сериализованными данными и не хочу обрабатывать php-сторону. Но да ... если у кого-то есть какие-то соображения относительно того, как я могу заставить этот запрос работать, пожалуйста, дайте мне знать.

Здесь ошибка кстати

Column not found: 1054 Unknown column '(SELECT SUBSTRING_INDEX(SUBSTRING_INDEX(p.fields,";",2),":",-1) 

Временное решение

Не знаете, как это обойти, но в этом файле

app/code/core/Zend/Db/Select.php 

вокруг линии 1396 есть защищенную переменную

protected $_controlCharacters = array(
     ';', 
     '--', 
     '#', 
     '/*', 
     '*/', 
    ); 

Обратите внимание на точку с запятой в начале, если я удалить это, то мой запрос, наконец, работает ... не бросит уверен, если есть способ обойти эту = \

+0

Использовать обратную косую черту, чтобы избежать точки с запятой? –

+0

Не работает, это была моя первая мысль – Banning

ответ

0

Я не думаю, что ваша точка с запятой ломать вещи. addExpressionFieldToSelect() принимает 3 параметра, $alias, $expression, $fields, вам не хватает одного из них.

+0

Если я изменил этот раздел на '' (SELECT SUBSTRING_INDEX (SUBSTRING_INDEX (p.fields, ":", 2), ":", - 1) FROM plugincompany_contactforms_entry p WHERE main_table.entity_id = p.entity_id) '', тогда он работает ... я пробовал использовать третий параметр, но я все равно получаю ту же ошибку, что и 'Column not found: 1054 Unknown column '(SELECT SUBSTRING_INDEX (SUBSTRING_INDEX (p.fields," ; ", 2),": ", - 1)' – Banning

Смежные вопросы