How can I use DATE() in Doctrine 2 DQL?

后端 未结 3 1027
既然无缘
既然无缘 2020-12-03 18:43

IN Symfony, when i used the following query with DATE function in the mysql i get a error

    SELECT employer.companyName AS employerName, jobs.jobId, jobs.         


        
相关标签:
3条回答
  • 2020-12-03 19:18

    DQL is only aware of few standard sql functions (coalesce for example). To be able to use your custom function you need to register it and tell doctrine how to translate it into raw sql. Follow these guides:

    Symfony Doc

    Doctrine Doc

    And check my answer here

    0 讨论(0)
  • 2020-12-03 19:28

    Or if you don't want add a new dependency, you can use code like this:

    $dateTime = new \DateTime();
    $qb
       ->andWhere('jobs.endDate BETWEEN :dateMin AND :dateMax')
       ->setParameters(
           [
                'dateMin' => $dateTime->format('Y-m-d 00:00:00'),
                'dateMax' => $dateTime->format('Y-m-d 23:59:59'),
           ]
        );
    
    0 讨论(0)
  • 2020-12-03 19:29

    In addition to the accepted answer there are a tonne of pre-built custom functions available at https://github.com/beberlei/DoctrineExtensions .

    These can be then registered in your config like

    doctrine:
        orm:
            dql:
                string_functions:
                    DATE: DoctrineExtensions\Query\Mysql\Date
    

    and can then be used in your DQL (as in your query) like

    DATE(jobs.endDate) AS endDate
    
    0 讨论(0)
提交回复
热议问题