有没有办法在Doctrine2中将SQL表达式作为实体字段值传递?

时间:2011-10-18 14:41:13

标签: php sql doctrine-orm

有没有办法做这样的事情:(哑代码)

$entity = new Entity\SomeEntity();

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

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

[编辑] 我想在Oracle tablespace.sequence_name.next值中插入序列中的ID,我知道这可以通过触发器完成,但是我的访问用户无法在我的环境中创建触发器。

4 个答案:

答案 0 :(得分:1)

如果你问一个关于你想要实现的事情的问题,那将会更有效。

据我所知,这不起作用,Doctrine2对于将域模型与持久层混合非常特殊。这会将您的域图层与您的持久层相结合。

你想要达到的目标是什么?尽管我不确定你要解决的问题是什么,但你可能最适合使用事件监听器。

答案 1 :(得分:0)

答案 2 :(得分:0)

您必须记住Doctrine2实体映射SQL字段。每种数据类型都需要可以映射到您的数据库。

String变为varchar或blob,整数变为int等。对象没有相应的数据类型,但有一个例外:关系!作为对象关系数据映射器,Doctrine可以将Object(Entity或EntityCollection)映射到相关表(如果由您定义)。您真的应该深入了解Doctrine为您定义这些功能的能力,如official tutorial中所述。

答案 3 :(得分:0)

对于doctrine2

,答案是不可能的