Я не могу спать из-за этого, я либо упускаю что-то действительно очевидное, либо это невозможно сделать так.
У меня есть эта штука Doctrine Query Builder:
$this->queryBuilder
->where('entity.id != ' . $id)
->andWhere(
$this->queryBuilder->expr()->andX(
$this->queryBuilder->expr()->in(":validatedValue", ['slug', 'title', 'content'])
)
)
->setParameter('validatedValue', $value);
Теперь он производит что-то вроде этого:
SELECT
p0_.id AS id_0,
p0_.title AS title_1,
p0_.teaser AS teaser_2,
p0_.content AS content_3,
p0_.slug AS slug_4
FROM
posts p0_
WHERE
p0_.id <> 1
AND 'my-string-value-something something' IN('slug', 'title', 'content')
У меня проблема с этой конкретной строкой:
AND 'my-string-value-something something' IN('slug', 'title', 'content')
Я хочу иметь возможность проверять фактические столбцы, поэтому мне нужно создать что-то вроде этого:
AND 'my-string-value-something something' IN(slug, title, content)
Как вы заметили, правильная версия, которую я хочу иметь, не имеет кавычек вокруг имен полей, если это имеет смысл. Если они будут там, они будут рассматриваться как строка, а не как фактический столбец в таблице.
Кажется, я не могу создать это с помощью этого построителя запросов. Я пробовал всевозможные трюки и вкладывал expr()
, и ничего из того, что я пробовал, не работало.
Кто-нибудь вообще знает, как я могу сделать это с помощью строителя? Могу ли я сделать это с помощью компоновщика или мне просто использовать для этого DQL или простой SQL?