在我的系统中,我可以在旺季指定2周的预订,所以如果两个人在家族等级较低的两个兄弟想要预订同一期间,在旺季优先规则适用。
我需要获得表单中选择的联系人的周期预订,因此我在验证器中将以下代码添加到我的验证函数中(1用于测试):
public function validate($value, Constraint $constraint) {
$PB = $this->doctrine->getRepository('AppBundle:Period')->getPBForContact(1);
var_dump($PB);
die();下面是对应函数的存储库代码:
public function getPBForContact($Id){
$em = $this->getEntityManager();
$query = $em->createQuery('SELECT PB FROM AppBundle:Period PB JOIN PB.contact C WHERE C.id = :Id AND PB.draft = FALSE')->setParameter('Id', $Id);
$PB = $query->getSingleResult();
return $PB;
}问题是,当我转储期间预订时,给定的输出是编辑表单上的日期,而不是数据库中记录的日期。当我在DQL中指定列时,我会从数据库记录中得到开始日期和结束日期,但是我不再有这样的对象。另外,当我使用其他联系人的id时,它会给出该联系人的期间预订的正确日期。
为什么没有保存时返回输入的表单值?如何才能获得数据库值而不是表单值?
我正在使用Symfony 2.7和Doctrine。
发布于 2016-01-21 07:36:32
这是因为原则将身份图用于加载的对象。不能简单地使用同一实体的两个版本。解决办法取决于许多因素。例如,您可以在处理表单之前克隆实体并处理副本。
https://stackoverflow.com/questions/34915988
复制相似问题