坚持Doctrine2时如何跳过列?

Posted

技术标签:

【中文标题】坚持Doctrine2时如何跳过列?【英文标题】:How to skip column when persisting in Doctrine2? 【发布时间】:2012-09-26 08:06:41 【问题描述】:

当对象是created 时,我有一列,当它是updated 时,我有一列。 当我创建并保留新对象时,我从 mysql 收到错误:

updated 不能为空。

我没有为其设置任何值,因为我希望 updated 列保持不变并最终获得默认数据库值。

如何告诉教义只保留那些我明确设置/更改的值的列?

【问题讨论】:

向我们展示您的实体配置 - 您必须将其设置为需要一个值 仍在等待doctrine-project.org/jira/browse/DDC-2045的答复 【参考方案1】:

确保您的列定义将nullable 定义为true

/**
 * @Column(type="datetime", nullable=true)
 */
protected $updated;

【讨论】:

不起作用。如果您查看源代码,您会发现 nullable 仅用于关系/连接 @coviex 呃,不... docs.doctrine-project.org/en/2.0.x/reference/…【参考方案2】:

那么您应该将实体中的列设置为可为空的 false。

在您的实体中:

/**
 * @var datetime $date_updated
 *
 * @ORM\Column(type="datetime", nullable=true)
 */
private $date_updated;

【讨论】:

如果设置为nullable=false,则意味着它需要一个值 对不起我的错误。我已经改了。

以上是关于坚持Doctrine2时如何跳过列?的主要内容,如果未能解决你的问题,请参考以下文章

为啥 .setValue() 在 for 循环中跳过列?

对于R中的循环跳过列

Doctrine2 ManyToMany 自引用

Doctrine2 - (如何)使用 main 获取关联对象

如何在 ORM Doctrine2 中手动设置/保留主键

坚持原则2“类不存在”