Php Symfony 4对整个实体的验证

Php Symfony 4对整个实体的验证,php,symfony,validation,doctrine,symfony4,Php,Symfony,Validation,Doctrine,Symfony4,所以,我需要一份体育俱乐部预订的确认书。 预订有开始和结束日期时间,您可以为一个或多个表进行预订 所以实体看起来像 班级预订 { 使用时间标签; /** *@ORM\Id() *@ORM\GeneratedValue() *@ORM\Column(type=“integer”) */ 私人$id; /** *@ORM\manytone(targetEntity=“App\Entity\User”,inversedBy=“reservations”) *@ORM\JoinColumn(nullab

所以,我需要一份体育俱乐部预订的确认书。 预订有开始和结束日期时间,您可以为一个或多个表进行预订

所以实体看起来像

班级预订
{
使用时间标签;
/**
*@ORM\Id()
*@ORM\GeneratedValue()
*@ORM\Column(type=“integer”)
*/
私人$id;
/**
*@ORM\manytone(targetEntity=“App\Entity\User”,inversedBy=“reservations”)
*@ORM\JoinColumn(nullable=false)
*/
私人用户;
/**
*@ORM\ManyToMany(targetEntity=“App\Entity\Table”,inversedBy=“reservations”)
*/
私人$tables;
/**
*@ORM\Column(type=“datetime”)
*/
私人$start;
/**
*@ORM\Column(type=“datetime”)
*/
私人$end;
...
}
(不要担心实体“Table”——db表,因为它被命名为“snooker_Table”;)

现在我需要验证,在具有请求的表的请求时间范围内,没有其他保留已经存在。 这让我头疼

我知道我可以在控制器操作创建/更新中“手动”完成。但是我也在使用symfonyseasyadmin,所以我也需要把代码放在那里。 我考虑将验证作为注释直接放入实体中。但我不知道在哪里。。。如果我把它放在“$tables”上,我只会得到一个ArrayCollection,没有必要的开始和结束日期时间。而且它也不是唯一的实体(因为我需要使用一系列的日期时间等等)

那么:有什么想法可以直接在实体中实现这一点吗?或者至少在表单类型中(为了便于管理,我以后会关心)


Thx预先通知。

好的,我将这样做:

创建用于验证的存储库方法(不是约束),并将其用于整个实体本身的Uniquentity约束。感觉有点脏,但还好。。。
希望这在easy admin中也能起作用。

您是否尝试过创建约束?约束本身并不是问题所在。但是把它放在哪里…就像代码本身一样?还是在
保留
实体中?最后一节讨论类验证而不是属性验证。您还必须创建一个约束。在自定义约束中,您可以使用存储库查找约束是否失败,唯一性是约束。