Symfony 6 Maker Bundle命令行能否设置add_date默认值为CURRENT_TIMESTAMP?
Symfony 6 Maker Bundle 设置datetime字段默认值为CURRENT_TIMESTAMP
Maker Bundle在Symfony 6版本中,无法直接通过命令行参数为datetime类型字段设置CURRENT_TIMESTAMP默认值,必须手动修改实体类和迁移文件来实现。具体操作步骤如下:
- 先用
make:entity命令创建字段,将add_date设为datetime类型,暂时不配置默认值。 - 修改实体类的对应属性,在
#[ORM\Column]注解中添加数据库层面的默认值配置:
若使用MySQL且字段不允许为空,可补充#[ORM\Column(type: 'datetime', options: ['default' => 'CURRENT_TIMESTAMP'])] private ?\DateTimeInterface $addDate = null;nullable: false参数。 - 生成并执行迁移:运行
make:migration生成迁移文件,打开文件确认addColumn部分包含default: 'CURRENT_TIMESTAMP'后,执行doctrine:migrations:migrate完成数据库更新。
另外,也可以在应用层面实现自动赋值——在实体的构造函数中初始化字段:
public function __construct() { $this->addDate = new \DateTimeImmutable(); }
这种方式是在对象创建时直接设置当前时间,和数据库默认值的作用场景略有不同,可根据需求选择。
内容的提问来源于stack exchange,提问作者Asrorbek Sultanov
相关产品推荐
相关产品推荐

