Я хочу сделать вставку с вычисляемым полем в учении.Если бы я делал это с SQL, это выглядело бы так:
INSERT INTO "TableX"
( "ID_Special",
"Name"
)
VALUES ( (select MAX(ID_Special) + 1 from "TableX"),
"blabla"
)
«ID_Special» должен быть значением autoinc-Value, не будучи уникальным.Так что есть другие INSERT, сделанные на «TableX», которые вставляют уже существующий «ID_Special».
Теперь я иду следующим образом:
$qb = $em->createQueryBuilder();
$qb->select('MAX(r.ID_Special)')->from('TableX', 'r');
$nextIDSpecial = $qb->getQuery()->getSingleScalarResult();
...
$dataset = new TableX();
$dataset->setIDSpecial($nextIDSpecial);
$dataset->setName('blabla');
$em->persist($dataset);
$em->flush();
Но это может столкнуться с проблемами, еслиУ меня есть многопользовательский доступ.
Есть ли способ создать первый показанный SQL-оператор с помощью DQL?
Или есть способ сделать мой второй подход атомарным?