У меня есть объект с именем User, и я хочу создать поле DateTime.
Мои занятия:
<?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 документация.
Assert\DateTime
Применяйте только ограничения к вашей собственности: это означает, что при отправке вашей формы, если данные не являются чем-то переводимым на определенную дату, они будут недействительными.
Вы должны использовать ORM\Column(type="datetime")
для доктрины, чтобы сохранить его в базе данных.
Конечно, используйте оба, чтобы сохранить данные и проверить
/**
* @Assert\DateTime()
* @ORM\Column(type="datetime")
*/
private $regData;
Ну, мне просто нужно было требовать Валидатор.
Я побежал composer require validator
а потом я побежал php bin/console doctrine:migrations:diff
и это просто сработало.