Php 带addOrderBY的Doctrine sql函数
我正在使用doctrine querybuilder,我需要在查询中包含->addOrderBy 所以一开始我有这个Php 带addOrderBY的Doctrine sql函数,php,sql,symfony,doctrine-orm,doctrine,Php,Sql,Symfony,Doctrine Orm,Doctrine,我正在使用doctrine querybuilder,我需要在查询中包含->addOrderBy 所以一开始我有这个 $qb->addOrderBy('a.weighting', 'DESC'); 这很好,但没有带来预期的结果,我回到绘图板并创建了新的查询,按零件排序应该如下所示: order by DATE_FORMAT(published_at, '%Y/%m/%d') DESC 我试图将其翻译成Doctrine queryBuilder,但它不起作用,我可能做错了什么: 我的按
$qb->addOrderBy('a.weighting', 'DESC');
这很好,但没有带来预期的结果,我回到绘图板并创建了新的查询,按零件排序应该如下所示:
order by DATE_FORMAT(published_at, '%Y/%m/%d') DESC
我试图将其翻译成Doctrine queryBuilder,但它不起作用,我可能做错了什么:
我的按查询部分翻译的订单:
$qb->addOrderBy('DATE_FORMAT(a.published_at, %Y/%m/%d)', 'DESC');
我试着用谷歌搜索答案,然后转到了Doctrine网站:
但是仍然没有运气为什么要在Doctrine中运行MySQL DATE\u格式?为什么不: $qb->addOrderBy'a.published_at','DESC'
是否在有效的日期字段中发布?还有一种日期格式会将其更改为字符串,并将其排序为字符串。因为为了检索所需数据并使其按顺序排列,我需要这就是我需要的日期格式,但我不知道如何将其转换为DOCTRINEBut datetime以Y-m-d H:I:s格式存储在数据库中。所以,若小时数产生问题,那个么在该字段上排序可以正常工作,也许你们应该使用日期字段类型?。但若必须使用DATE_格式,则应定义自定义DQL函数。第一个google结果:是的,问题出在时间上,这就是为什么我需要使用日期格式,除了使用日期格式之外,还有其他方法可以解决这个问题吗?如果你不想创建自定义DQL函数,为订单目的添加特殊列,并在setPublishedAt更新该字段中,它可以被索引为整数,例如值:20140101,这非常快;