我在Zend Framework 2中工作并使用Doctrine查询语言。使用原则查询语言计算出生日期的年龄
我必须在用户列表页面上添加年龄过滤器。在数据库中,我使用日期格式存储了用户的出生日期。请帮助我如何使用where条件来应用我的过滤器。
$repository = $this->entityManager->getRepository('User\Entity\User');
$query = $repository->createQueryBuilder('u');
$query->where("(DATE_DIFF(CURRENT_DATE(), u.birth_date)/365)=".$search_arr['age']);
此查询不返回任何内容。原因可能是,当我在mysql DATEDIFF(CURRENT_DATE() , u.birth_date) /365
中运行它时,它会返回浮点数,例如10.29。我需要将其转换为整数进行比较。 Mysql提供了FLOOR函数,但它在DQL中不起作用。
请帮助我。
你有没有尝试[this](http://docs.doctrine-project.org/zh/2.1/reference/dql-doctrine-query-language.html)解决方案? – Peon 2013-02-18 13:46:53
@DainisAbols我试过这个解决方案。但它给了我FLOOR函数在DQL中不可用的错误。 – 2013-02-18 13:51:28
您必须定义一个自定义的DQL函数:http://www.doctrine-project.org/blog/doctrine2-custom-dql-udfs.html – Ocramius 2013-02-18 14:42:08