使用学说保存日期字段



在我的应用程序中,我将数据保存到MySQL数据库中。对我来说,保存日期是完全足够的,而不是时间,因此我选择了数据库字段的日期格式。

在我的Symfony 4应用程序的实体中,这看起来像:

/**
 * @var DateTime
 *
 * @ORMColumn(name="create_date", type="date", nullable=false, options={"default" = "CURRENT_TIMESTAMP"})
 * @AssertNotBlank
 */
private $createDate;

/**
 * @param DateTime $createDate
 *
 * @return Asset
 */
public function setCreateDate(DateTime $createDate)
{
    $this->createDate = $createDate;
    return $this;
}

生成的SQL语句如下:

INSERT INTO asset 
(name, create_date, beide, comment, amount, user_id, category_id) 
VALUES 
("Schmeckerlis","2019-01-19 16:03:53",0,"",7.34,345,345)

如您所见,添加了时间。这是您使用学说设置日期字段的方式吗?

我必须将其更改为DateTime或Timestamp字段吗?

我应该删除实体中的默认值吗?

https://www.doctrine-project.org/projects/doctrine-dbal/en/2.6/reference/types.html#date说以下内容:

"日期:地图和转换日期数据,而无需时间和时区信息。如果您知道要存储的数据始终只需是没有时间和时区信息的日期,则应考虑使用此类型。从数据库中检索的值始终将转换为PHP的 dateTime对象或null,如果没有数据。"

CURRENT_TIMESTAMP将日期和时间返回为 YYYY-MM-DD HH-MM-SS。如果我正确理解您,您只需要YYYY-MM-DD部分。

为此,您必须删除options={"default" = "CURRENT_TIMESTAMP"},并在实体的构造方法中执行此操作。每次您进行new Entity()时,这个都会被调用。

public function __construct()
{
    $date = new DateTime();
    $this->createDate = $date->format('Y-m-d');
}

相关内容

  • 没有找到相关文章

最新更新