Есть ли способ передать выражение SQL в качестве значения поля сущности в Doctrine2? - PullRequest
0 голосов
/ 18 октября 2011

Есть ли способ сделать что-то вроде этого: (тупой код)

$entity = new Entity\SomeEntity();

$entity->mappedField = new SQLExpression('SOME SQL CODE HEARE');

$entityManager->persist($entity);
$entityManager->flush();

[EDIT] Я хочу вставить идентификатор из последовательности в значение Oracle tablespace.sequence_name.next, я знаю, что это можно сделать из триггера, но мой пользователь доступа не может создавать триггеры в моем env.

Ответы [ 4 ]

1 голос
/ 18 октября 2011

Было бы намного эффективнее, если бы вы задали вопрос о том, чего вы пытаетесь достичь.

Насколько я знаю, это не сработает, Doctrine2 очень своеобразно смешивает модель предметной области со слоем постоянства.Это соединит ваш уровень домена с вашим уровнем персистентности.

Чего вы пытаетесь достичь?Вероятно, вам лучше обслужить слушателя событий, хотя я не уверен, какую проблему вы пытаетесь решить.

0 голосов
/ 22 октября 2011

Ответ - это невозможно с доктриной2

0 голосов
/ 20 октября 2011

Вы должны помнить, что сущности Doctrine2 отображают поля SQL. Каждый тип данных должен соответствовать вашей базе данных.

String становится varchar или blob, целое число становится int и т. Д. У объектов нет соответствующего типа данных с одним исключением: Relations! В качестве объекта Doctrine для реляционных данных может отображать объект (Entity или EntityCollection) в связанную таблицу, если она определена вами. Вы действительно должны глубже взглянуть на возможности, которые Doctrine дает вам, чтобы определить их, как указано в официальном руководстве .

0 голосов
/ 19 октября 2011

Нет необходимости, Doctrine может самостоятельно обрабатывать последовательности Oracle, см. http://www.doctrine -project.org / docs / orm / 2.0 / en / reference / basic-mapping.html # identifier-generation-стратегии .

И см. Также Doctrine2 не установил последовательность по умолчанию для столбца id (postgres) .

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