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会对此抱怨吗?对象之间的关系由该对象的一个引用列与其他实体建立,而该值在部分/代理对象中持续存在不应该是一个问题。