如何在原则2中设置默认值?
当前回答
如果对实体使用yaml定义, 以下工作为我在postgresql数据库:
Entity\Entity_name:
type: entity
table: table_name
fields:
field_name:
type: boolean
nullable: false
options:
default: false
其他回答
下面是我自己解决问题的方法。下面是MySQL默认值的实体示例。但是,这也需要在您的实体中设置一个构造函数,并在那里设置默认值。
Entity\Example:
type: entity
table: example
fields:
id:
type: integer
id: true
generator:
strategy: AUTO
label:
type: string
columnDefinition: varchar(255) NOT NULL DEFAULT 'default_value' COMMENT 'This is column comment'
使用:
options={"default":"foo bar"}
而不是:
options={"default"="foo bar"}
例如:
/**
* @ORM\Column(name="foo", type="smallint", options={"default":0})
*/
private $foo
在属性定义上设置默认值时要小心!在构造函数中执行,以避免出现问题。如果您在属性定义上定义它,然后将对象持久化到数据库,然后进行部分加载,那么未加载的属性将再次具有默认值。如果您想再次持久化对象,这是危险的。
我使用的解决方法是LifeCycleCallback。仍然在等待是否有更多的“原生”方法,例如@Column(type="string", default="hello默认值")。
/**
* @Entity @Table(name="posts") @HasLifeCycleCallbacks
*/
class Post implements Node, \Zend_Acl_Resource_Interface {
...
/**
* @PrePersist
*/
function onPrePersist() {
// set default date
$this->dtPosted = date('Y-m-d H:m:s');
}
工作对我的mysql数据库也:
Entity\Entity_name:
type: entity
table: table_name
fields:
field_name:
type: integer
nullable: true
options:
default: 1
推荐文章
- 致命错误:未找到类“SoapClient”
- 我目前使用的是哪个版本的CodeIgniter ?
- 合并两个PHP对象的最佳方法是什么?
- 如何使HTTP请求在PHP和不等待响应
- SQLAlchemy:引擎、连接和会话差异
- 发送附件与PHP邮件()?
- 如何获得当前的路线在Symfony 2?
- 用PHP删除字符串的前4个字符
- mysql_connect():[2002]没有这样的文件或目录(试图通过unix:///tmp/mysql.sock连接)在
- 一个函数的多个返回值
- 在PHP中使用foreach循环时查找数组的最后一个元素
- 检查数组是否为空
- PHP DOMDocument loadHTML没有正确编码UTF-8
- PHP在个位数数前加上前导零
- PHPMailer字符编码问题