学说当年
Current year with Doctrine
我试图在查询构建器中使用 Doctrine 2 的 where 条件中的当前年份,但不可能。使用 My SQL 没问题,但与 Doctrine 无关,它不起作用。那么有人可以帮我解决这个问题吗?
我试过了(一个接一个):
->where('year = CURRENT_TIMESTAMP()')
->where('SUBSTRING(i.interventionDate),1,4) = CURRENT_DATE()')
->where('Year(i.interventionDate) = YEAR(CURDATE()')
->where($qb->expr()->gt('i.interventionDate', 'CURRENT_TIMESTAMP()'))
->where('SUBSTRING(i.interventionDate), 1,4) = CURRENT_TIMESTAMP()')
感谢提前
MySQL 的一些 Date 功能是特定于平台的,而 Doctrine 是对多个平台的抽象。这就是为什么他们不支持开箱即用的 YEAR()
功能。您可以编写自定义逻辑或使用 beberlei/DoctrineExtensions 将这些和其他 mysql 特定的功能添加到您的设置中。安装捆绑包,然后在 config.yml 的学说配置中通过将函数名称映射到相应的 class 添加新的 dql 类型,如下所示:
doctrine:
orm:
dql:
datetime_functions:
date: DoctrineExtensions\Query\Mysql\Date
...
或使用 config file from the library.
之后您可以编写查询将当前日期和 table 中的日期都转换为年份并进行比较,如下所示:
->where('YEAR(i.interventionDate) = YEAR(CURRENT_DATE())');
我试图在查询构建器中使用 Doctrine 2 的 where 条件中的当前年份,但不可能。使用 My SQL 没问题,但与 Doctrine 无关,它不起作用。那么有人可以帮我解决这个问题吗?
我试过了(一个接一个):
->where('year = CURRENT_TIMESTAMP()')
->where('SUBSTRING(i.interventionDate),1,4) = CURRENT_DATE()')
->where('Year(i.interventionDate) = YEAR(CURDATE()')
->where($qb->expr()->gt('i.interventionDate', 'CURRENT_TIMESTAMP()'))
->where('SUBSTRING(i.interventionDate), 1,4) = CURRENT_TIMESTAMP()')
感谢提前
MySQL 的一些 Date 功能是特定于平台的,而 Doctrine 是对多个平台的抽象。这就是为什么他们不支持开箱即用的 YEAR()
功能。您可以编写自定义逻辑或使用 beberlei/DoctrineExtensions 将这些和其他 mysql 特定的功能添加到您的设置中。安装捆绑包,然后在 config.yml 的学说配置中通过将函数名称映射到相应的 class 添加新的 dql 类型,如下所示:
doctrine:
orm:
dql:
datetime_functions:
date: DoctrineExtensions\Query\Mysql\Date
...
或使用 config file from the library.
之后您可以编写查询将当前日期和 table 中的日期都转换为年份并进行比较,如下所示:
->where('YEAR(i.interventionDate) = YEAR(CURRENT_DATE())');