gpt4 book ai didi

mysql - Doctrine 默认值与空插入

转载 作者:可可西里 更新时间:2023-11-01 07:04:10 28 4
gpt4 key购买 nike

有件事让我很烦恼。我试图找到一个明确的答案,但到目前为止没有运气。

我正在使用 Symfony3、Doctrine2 和 MariaDB。

假设我在我的实体中创建了这样的东西:

/**
* @ORM\Column(
* name="status",
* type="boolean",
* options={"default": 0}
* )
*/
private $status;

现在多亏了这个,我在数据库中有了默认值为 0 的字段:

`status` tinyint(1) NOT NULL DEFAULT '0',

但是,每次我尝试将数据保存到数据库时,这样做有什么意义(例如,我尝试仅保存 10 个字段中的 1 个):

$story->setContent('Test Content');

$em = $this->getDoctrine()->getManager();
$em->persist($story);
$em->flush();

我得到:

SQLSTATE[23000]: Integrity constraint violation: 1048 Column 'status' cannot  be null

因为,对象上的其余字段当然都是空的。

我可以通过在构造函数中设置默认值或在数据库中允许空值来解决这个问题。

如果我不想这样做怎么办?我还缺少其他方法吗?

所以我想知道的是:

  • 是在实体中设置默认值还是在数据库中只允许空值?
  • 我的逻辑有问题吗?
  • 有没有更酷、更简洁的方法来做到这一点?

最佳答案

就像@Cerad 评论的那样,您只需要在您的实际实体类中初始化该属性

/**
* @ORM\Column(
* name="status",
* type="boolean",
* options={"default": 0}
* )
*/
private $status = 0;

关于mysql - Doctrine 默认值与空插入,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/43195874/

28 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com