简单请求findBy(日期)学说不起作用

时间:2016-06-30 22:06:17

标签: php mysql symfony orm doctrine-orm

我有一个简单的问题,我只想按日期选择所有预订,我尝试使用ID或电子邮件等其他属性但效果不错但不是日期:

$reservations = $this->getDoctrine()->getManager()
->getRepository('LouvrePagesBundle:Reservation')->findByDateReservation($date);

我的变量$ date和我的表之间的日期格式完全相同,我真的需要帮助

DataTable screenshot

1 个答案:

答案 0 :(得分:0)

正如其他人和你自己的评论中所提到的,Doctrine期望一个datetime对象来搜索。一般来说,永远不要在代码中使用没有DateTime对象的日期或时间,在学会了如何处理它之后,您将享受到这个对象的舒适感。特别是当你必须处理时区问题时。

tl:dr解决方案是:

$repository->findByDateReservation(new DateTime($date));

顺便说一句,由于你的数据库图像:不要在数据库列名中使用大写。在配置文件中设置:

doctrine:
    # ...

    orm:
        # ...
        naming_strategy: doctrine.orm.naming_strategy.underscore

然后,dateReservation等实体中的列名称将自动更改为date_reservation