【发布时间】:2013-05-17 01:16:59
【问题描述】:
使用原始 SQL,我习惯性地执行以下操作:
SELECT * FROM users WHERE MONTH(birthday) = 11 AND DAY(birthday) = 17.
但是这些MONTH() 和DAY() 函数不适用于所有数据库=/
那么,在 Doctrine 支持的任何数据库中,最好的方法是什么?
【问题讨论】:
标签: orm doctrine-orm dql
使用原始 SQL,我习惯性地执行以下操作:
SELECT * FROM users WHERE MONTH(birthday) = 11 AND DAY(birthday) = 17.
但是这些MONTH() 和DAY() 函数不适用于所有数据库=/
那么,在 Doctrine 支持的任何数据库中,最好的方法是什么?
【问题讨论】:
标签: orm doctrine-orm dql
要在 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
}
【讨论】: