Мне нужен следующий SQL-запрос
SELECT p.*
FROM player p
WHERE CONCAT(p.first_name, ' ', p.last_name) = ?
в ДКЛ. Что у меня есть до сих пор
$qb->add('select', 'p')
->add('from', 'VNNCoreBundle:Player p')
->add('where', $qb->expr()->eq(
$qb->expr()->concat('p.firstName', $qb->expr()->concat(' ', 'p.lastName')),
':name'
))
->setParameters(array('name' => $name));
но это неправильно.
Я знаю, что всегда могу просто получить идентификатор моей записи с помощью собственного SQL, а затем выполнить findOneById()
, чтобы получить запись с помощью Doctrine. С одной стороны, это похоже на кладж/хак, а с другой стороны, кажется глупым делать в DQL то, что было бы простым запросом в прямом SQL, поскольку DQL не формируется. быть очень элегантным. Во всяком случае, я потратил на это много времени, и теперь мне любопытно, как правильно это сделать в DQL.