Mysql Doctirne查询生成器,按生日筛选(使用日期时间)?

Mysql Doctirne查询生成器,按生日筛选(使用日期时间)?,mysql,sql,datetime,doctrine-orm,Mysql,Sql,Datetime,Doctrine Orm,我有一个生成器,用于选择电话号码不为null、权限标志为true(在第一个生成器调用中)且此函数中生日模板不为null的人。还有一个生日字段: public function getAllForBirthdaySmsSend() { $qb = $this->getAllSuitableForSmsQueryBuilder(); $alias = $qb->getRootAlias(); $today = new \DateTime(); re

我有一个生成器,用于选择电话号码不为
null
、权限标志为
true
(在第一个生成器调用中)且此函数中生日模板不为
null
的人。还有一个
生日
字段:

public function getAllForBirthdaySmsSend()
{
    $qb    = $this->getAllSuitableForSmsQueryBuilder();
    $alias = $qb->getRootAlias();
    $today = new \DateTime();

    return $qb->andWhere(
            $qb->expr()->andX(
                $qb->expr()->isNotNull("$alias.sms_birthday_template"),
                /* Filter if today is his birthday */
            ))
    ;
}
现在我应该按生日筛选人,也就是说,如果生日栏的格式为
'm-d-'。日期('Y')
等于
$today


有人知道如何使用查询生成器实现这一点吗?我不想编写纯SQL查询,但我更喜欢重用另一个查询生成器以保持干燥。

您可以使用本机SQL,然后对其进行映射,以便处理使用og
结果映射的真实实体。对于诅咒,年份被忽略:

映射查询字段:

$rsm = new Doctrine\ORM\Query\ResultSetMapping;

    $rsm->addEntityResult('models\User', 'u');
    $rsm->addFieldResult('u', 'id', 'id');
    $rsm->addFieldResult('u', 'username', 'username');
    $rsm->addFieldResult('u', 'birthday', 'birthday');
使用本机日期函数创建查询(现在已映射每个选定列):

获取用户:

$users = $query->getResult();
提示:在执行查询时,尽量避免强制转换列值。它强制MySQL(如果是您的情况)在执行比较和更改性能之前将列转换为字符


编辑生日列是日期时间类型。用户模型将birtdate属性映射为
\DateTime对象

您可以使用本机sql,然后映射它,以便处理使用og
结果映射的真实实体。对于诅咒,年份被忽略:

映射查询字段:

$rsm = new Doctrine\ORM\Query\ResultSetMapping;

    $rsm->addEntityResult('models\User', 'u');
    $rsm->addFieldResult('u', 'id', 'id');
    $rsm->addFieldResult('u', 'username', 'username');
    $rsm->addFieldResult('u', 'birthday', 'birthday');
使用本机日期函数创建查询(现在已映射每个选定列):

获取用户:

$users = $query->getResult();
提示:在执行查询时,尽量避免强制转换列值。它强制MySQL(如果是您的情况)在执行比较和更改性能之前将列转换为字符


编辑生日列是日期时间类型。用户模型将birtdate attibute映射为
\DateTime对象

,这就是我在没有阅读您的答案的情况下所做的!谢谢只是一个问题<代码>用户
是否可以分配给其他实体?我是说。。。这是一个“部分”对象,Doctrine会对此抱怨吗?对象之间的关系是由该对象的一个引用列与其他实体建立的,而该值在部分/代理对象中保留不应该是问题。这就是我在没有阅读您的答案的情况下所做的!谢谢只是一个问题<代码>用户
是否可以分配给其他实体?我是说。。。这是一个“部分”对象,Doctrine会对此抱怨吗?对象之间的关系由该对象的一个引用列与其他实体建立,而该值在部分/代理对象中持续存在不应该是一个问题。