【发布时间】:2013-10-01 08:42:03
【问题描述】:
我遇到了in this post 解释的类似问题,但提供的解决方案不适用于我的情况。问题来了……
我正在使用 Symfony2,它使用 Doctrine2 作为 ORM,将新用户插入数据库。当我使用对象方法插入用户时,会在我不想插入任何内容的字段中插入一个空值(因此将插入默认值)。
这就是我希望生成的 INSERT 语句的外观:
INSERT into mytable (name) VALUES (?)
array(1) {
[1]=>
string(6) "myName"
}
这就是 Doctrine 创建 INSERT 语句的方式
INSERT into mytable (name, token, creationDate) VALUES (?,?,?)
array(3) {
[1]=>
string(6) "myName"
[2]=>
NULL
[3]=>
NULL
}
令牌应该有一个使用 postgresql 的 uuid_generate_v5 方法定义的默认值。 creationDate 的默认值应该是 now()。教义插入的 NULL 值会覆盖这些默认值。
有什么方法可以让教义忽略插入时的某些字段?
【问题讨论】:
-
你可以把默认值放在你模型对象的构造函数中。
-
@Nanocom +1 对于使用 Doctrine 2 映射的字段,您不应将默认值放入数据库中。将默认值放入构造函数中,或直接放入您的字段声明中。
-
谢谢。我没有使用构造函数的原因是因为有其他应用程序在使用这个数据库,并且它们使用数据库中的默认值。使用相同的方法生成令牌会很好。但如果不可能,那么我可能需要研究其他选项。谢谢
标签: php postgresql symfony doctrine-orm