I have the following entity (only attached the relevant parts):
use ApiPlatform\Core\Annotation\ApiResource;
use Doctrine\ORM\Mapping as ORM;
use Symfony\Component\Validator\Constraints as Assert;
/**
* @ApiResource(mercure=true)
* @ORM\Entity(repositoryClass="App\Repository\EventRepository")
*/
class Event {
/**
* @ORM\Column(type="datetime")
* @Assert\DateTime
* @Assert\NotNull
*/
private $createdAt;
public function __construct() {
$this->createdAt = new \DateTime();
}
public function getCreatedAt(): ?\DateTimeInterface {
return $this->createdAt;
}
public function setCreatedAt(\DateTimeInterface $createdAt): self {
$this->createdAt = $createdAt;
return $this;
}
}
Its repository:
class EventRepository extends ServiceEntityRepository {
public function __construct(ManagerRegistry $registry) {
parent::__construct($registry, Event::class);
}
}
When creating a POST request to the event endpoint (via Postman or the Swagger UI), it fails with the following exception:
You are using the wrong of assertion.
Date
expects a string or an object that can be cast into a string. And a DateTimeInterface
is neither.
You should be using a Type
constraint.
/**
* @Assert\Type("\DateTimeInterface")
*/
private $createdAt;
The ability to use Assert\Date
to validate DateTime
objects was deprecated on Symfony 4.2, and on Symfony 5.0 it was removed altogether.
If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!
Donate Us With