Как искать в bool поле в Doctrine по его эквивалентным строковым значениям - PullRequest
1 голос
/ 27 мая 2019

У меня есть таблица базы данных с tinyInt столбцом col (0=no, 1=yes). Мне нужно иметь возможность LIKE поиска текстовых эквивалентных значений в этом столбце на основе текста, введенного пользователем. Например, пользователь, ищущий «n», должен дать MySQL запрос "col LIKE '%n%'" и вернуть счетчик всех строк с col=0.

Я использую Doctrine 2 в Symfony 4. Я пробовал построитель запросов и createQuery(), и оба выдают мне одну и ту же ошибку.

Возможно ли то, что я пытаюсь? (Я не знаю, есть ли другой способ сделать это.)

Образец createQuery() Код:

$em = $this->getEntityManager();
$query = $em ->createQuery(
    "SELECT COUNT(1) AS c FROM App\Entity\MyEntity t 
    WHERE (CASE WHEN (t.bool_field=1) THEN 'yes' ELSE 'no' END) LIKE '%n%'"
    );
$res = $query->getResult();

В результате возникла ошибка:

[Синтаксическая ошибка], строка 0, столбец 111: Ошибка: ожидается =, <, <=, <>,>,> =, ! =, получил «НРАВИТСЯ»

Любая помощь будет очень признательна.

1 Ответ

0 голосов
/ 09 июня 2019

Вы можете добавить функцию, которая проверяет, присутствует ли поисковый термин 'n' в вашем примере в строке 'нет' или 'да'. Затем, если он присутствует в любом из них, вы будете знать, искать ли в столбце 1 или 0. Таким образом, вы также можете добавить больше строк «нет» или «да» для интернационализации позже.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...