我对symfony很陌生,对PHP 7还不是很有经验。
我们有一个活动数据库,活动发生后,组织者必须提交报告。
event
和report
是单独的实体类。report
对关联的event
一无所知,除了它的ID。
如果在事件发生之前提交报告,则验证应失败。 但是,我不知道如何在验证期间访问event
eventdate
属性。
我们通过注释定义约束,并且report
实体中已经存在回调约束。
我什至不确定在哪里正确进行此验证。直接在实体类中,在相关的表单类中,甚至在控制器中?
我已经将eventdate
作为单独的字段注入到表单中,但仍然不知道如何正确访问它以进行验证。
它可以安排为两步过程 - 最重要的是,通过报告中事件的 ID 作为教义关联链接事件。读取 ID 将读取它所引用的事件,并获取数据库记录 - 大概是事件发生的日期。
// in Entity/Report.php
/**
* One Report has One Event.
* @OneToOne(targetEntity="Event")
* @JoinColumn(name="event_id", referencedColumnName="id")
*/
private $event;
在这里,数据库具有event_id
列,您可以从$report->event
(或->getEvent()
(获取该记录的内容。
然后,如果您当前的报告回调验证,请添加另一个检查,以确保事件已经发生 - 如果没有,则添加新的违规行为"您无法报告尚未发生的事件"。