首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >DQL /DQL在验证过程中作为DQL结果返回表单值

DQL /DQL在验证过程中作为DQL结果返回表单值
EN

Stack Overflow用户
提问于 2016-01-21 05:23:15
回答 1查看 106关注 0票数 0

在我的系统中,我可以在旺季指定2周的预订,所以如果两个人在家族等级较低的两个兄弟想要预订同一期间,在旺季优先规则适用。

我需要获得表单中选择的联系人的周期预订,因此我在验证器中将以下代码添加到我的验证函数中(1用于测试):

代码语言:javascript
复制
public function validate($value, Constraint $constraint) {

   $PB = $this->doctrine->getRepository('AppBundle:Period')->getPBForContact(1);

   var_dump($PB);
   die();

下面是对应函数的存储库代码:

代码语言:javascript
复制
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。

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2016-01-21 07:36:32

这是因为原则将身份图用于加载的对象。不能简单地使用同一实体的两个版本。解决办法取决于许多因素。例如,您可以在处理表单之前克隆实体并处理副本。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/34915988

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档