如何在 Symfony 4 实体上制作日期时间?

How to make a DateTime on Symfony 4 entity?

我有一个名为 User 的实体,我想创建一个 DateTime 字段。

我的class:

<?php

namespace App\Entity;

use Doctrine\ORM\Mapping as ORM;
use Symfony\Component\Validator\Constraints as Assert;

/**
 * @ORM\Entity(repositoryClass="App\Repository\UserRepository")
 */
class User
{
    /**
     * @ORM\Id
     * @ORM\GeneratedValue
     * @ORM\Column(type="integer")
     */
    private $id;

    /**
     * @ORM\Column(type="string", length=250)
     */
    private $firstName;

     /**
     * @ORM\Column(type="string", length=250)
     */
    private $lastName;

    /**
     * @ORM\Column(type="string", length=250, nullable = true)
     */
    private $userName;

    /**
     * @ORM\Column(type="string", length=50)
     */
    private $email;

    /**
     * @ORM\Column(type="string", length=20)
     */
    private $password;

    /**
     *@Assert\DateTime()
     */
    private $regData;


    // GETTERS AND SETTERS
}

当我 运行 php bin/console doctrine:migrations:diff 时,我收到以下错误消息:

[Semantical Error] The annotation "@Symfony\Component\Validator\Constraints\DateTime" in property App\Entity\User::$regData does not exist, or could not be auto-loaded.

我不明白为什么会收到此消息错误。我认为我的代码是正确的。 我正在关注 Symfony 4 文档的这一部分。

好吧,我只需要要求验证器。 我 运行 composer require validator 然后我 运行 php bin/console doctrine:migrations:diff 就成功了。

Assert\DateTime 仅对您的 属性 应用约束:这意味着当您提交表单时,如果数据不是可翻译为日期的内容,则它将无效。

你必须使用 ORM\Column(type="datetime") 学说才能将其存储在数据库中。

当然,同时使用两者来保存和验证数据

  /**
    * @Assert\DateTime()
    * @ORM\Column(type="datetime")
    */
   private $regData;