Не удается найти метод FIND_IN_SET в Symfony - PullRequest
0 голосов
/ 07 января 2019

В моем классе хранилища. Я сделал конкретный запрос для получения данных из базы данных. У меня есть столбец с таким содержанием 44,55,22. Итак, я использую метод FIND_IN_SET, чтобы найти конкретное число в наборе.

Я пытался перенести это в Symfony

$query->orWhere($query->expr()->andX('f.private = :private',"FIND_IN_SET({$user->getId()},'f.toUsers')"));

Но я получил эту ошибку Symfony, которая означает, что метод отсутствует.

Неучитанная доктрина исключений PHP \ ORM \ Query \ QueryException: "[Синтаксическая ошибка], строка 0, столбец 821: Ошибка: ожидаемая известная функция, получено 'FIND_IN_SET'"

1 Ответ

0 голосов
/ 07 января 2019

РЕШЕНИЕ

Вот решение этой проблемы для всех, кто сталкивается с ней.

Сначала вы должны добавить эту строку в файл config.yml

orm:
  dql:
    string_functions:
      FIND_IN_SET: DoctrineExtensions\Query\Mysql\FindInSet

Это необходимо, чтобы Symfony знал, где находится функция.

В вашем классе репозитория вы можете вызывать функцию таким образом (это только пример) $query->OrWhere("FIND_IN_SET({$user->getId()},'55') <> 0");

...