DQL не поддерживает предложение RETURNING
, поэтому вам нужно использовать собственный SQL .Вам также придется создать отображение набора результатов .
ПРИМЕЧАНИЕ. Я не знаю фактических имен вашей таблицы и столбцов, но при условии, что они названы так же, как ваша сущность иСвойства, это будет работать:
$rsm = new \Doctrine\ORM\Query\ResultSetMapping();
$rsm->addScalarResult('jobReferenceNumber', 'jobReferenceNumber');
$sql = "
UPDATE account a
SET a.jobReferenceNumber = a.jobReferenceNumber + 1
WHERE a.id = :accountId
RETURNING a.jobReferenceNumber
";
$query = $this->entityManager->createNativeQuery($sql, $rsm);
$query->setParameter('accountId', $account->getId());
$total = $query->getSingleScalarResult();
Возможно, вам придется исправить имена таблиц и столбцов в моем примере.При использовании собственного SQL вы должны использовать фактические имена в базе данных, а не имена сущностей и свойств.Также помните, что postgres преобразует все имена объектов в верхний регистр, если они не заключены в кавычки.