使用原始 SQL,我习惯性地执行以下操作:
SELECT * FROM users WHERE MONTH(birthday) = 11 AND DAY(birthday) = 17
.
但是这些MONTH()
和DAY()
函数不适用于所有数据库=/
那么,在 Doctrine 支持的任何数据库上工作的最佳方法是什么?
使用原始 SQL,我习惯性地执行以下操作:
SELECT * FROM users WHERE MONTH(birthday) = 11 AND DAY(birthday) = 17
.
但是这些MONTH()
和DAY()
函数不适用于所有数据库=/
那么,在 Doctrine 支持的任何数据库上工作的最佳方法是什么?
要在 SQL 服务器级别进行此计算,您必须创建一些自定义 DQL 函数:
http://www.doctrine-project.org/blog/doctrine2-custom-dql-udfs.html
也看一下官方文档:
这是一个带有 postgresql DISTANCE 函数的示例:
您关心的是使这项工作适用于任何支持的 RDBM 吗?getSql()
在您的方法中利用 DatabasePlatform :
<?php
public function getSql(SqlWalker $walker)
{
$walker->getConnection()->getDatabasePlatform(); // platform specific stuff
}