Akuma
@Akuma
Веб-программист

Как добавить INSTR функцию в Doctrine2?

Добрый вечер,

использую Symfony 2.3 с пралагающейся доктриной.
необходимо использовать функцию INSTR() в запросах.

Нашел как добавить «свою» функцию, создал класс, но доктрина ругается на синтакс запроса…
В общем, если у кого-то есть готовый пример — дайте посмотреть, как все это должно выглядеть.

Для себя пример брал из этой функции:
github.com/doctrine/doctrine2/blob/90b6d5e293147a0268ca005362ff50343bc6dc0f/lib/Doctrine/ORM/Query/AST/Functions/SubstringFunction.php

По сути я просто убрал третий параметр, которого у меня нет, но все равно не получается.
  • Вопрос задан
  • 2771 просмотр
Решения вопроса 1
bredmm
@bredmm
наверно потому что в условие должно быть сравнение с чем либо
и наверно потому что выглядеть запрос должен как то так

SELECT count(*) FROM table1 WHERE INSTR(field1, 'bar') != 0;
Ответ написан
Пригласить эксперта
Ответы на вопрос 2
Akuma
@Akuma Автор вопроса
Веб-программист
Нашел пример: coolspamforeva.org/?p=292

Сделал все как описано, но ничего не изменилось.
Моя функция распарсивается, но ругается на дальнейший ORDER:
[Syntax Error] line 0, col 107: Error: Expected =, <, <=, <>, >, >=, !=, got 'ORDER'

Сам запрос:
SELECT n FROM QCoreBundle:Node n WHERE n.name IN (:names) AND n.level IN (:levels) AND INSTR(:path, n.url) ORDER BY n.left DESC


Если убрать ORDER BY то начнет ругаться на конец строки…
Ответ написан
Комментировать
Akuma
@Akuma Автор вопроса
Веб-программист
Кому интересно — выкрутился с помощью SUBSTRING(n.url, 1, :pathlen) = n.url
У меня все равно только один такой запрос — так что особой разницы быть не должно
Ответ написан
Комментировать
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы