通过在Symfony2中不使用原始SQL查询,而是在MySQL数据库上工作来订购

通过在Symfony2中不使用原始SQL查询,而是在MySQL数据库上工作来订购,mysql,symfony,Mysql,Symfony,我有一个查询,返回我用于下拉式日期选择器的日期列表,下面是SQL查询 SELECT `completion_date` FROM `enviro_figures_upload` GROUP BY YEAR( completion_date ) , MONTH( completion_date ) ORDER BY YEAR( completion_date ) ASC , MONTH( completion_date ) ASC 通过phpMyAdmin,查询将按我需要的顺序返回我需要的结果

我有一个查询,返回我用于下拉式日期选择器的日期列表,下面是SQL查询

SELECT `completion_date`
FROM `enviro_figures_upload`
GROUP BY YEAR( completion_date ) , MONTH( completion_date ) 
ORDER BY YEAR( completion_date ) ASC , MONTH( completion_date ) ASC
通过phpMyAdmin,查询将按我需要的顺序返回我需要的结果:

2014-01-01
2014-02-01
2014-11-01
2014-12-01
2015-01-01
2015-02-01
在我的Symfony2应用程序中,我使用以下代码将此数据获取到我的应用程序中:

    $sql4 = "SELECT `completion_date` FROM `enviro_figures_upload` GROUP BY YEAR(completion_date), MONTH(completion_date) ORDER BY YEAR(completion_date) ASC, MONTH(completion_date) ASC;";

    $activeDateSelect = $this->getDoctrine()->getManager()->getConnection()->prepare($sql4);
    $activeDateSelect->execute();

    $activeDate = $activeDateSelect->fetchAll();
然而,结果的顺序根本不正确。返回的结果如下所示:

2014-01-01
2015-01-01
2014-11-01
2014-12-01
2015-02-01
{% for ad in actdate %}
     <option value="{{ad.completion_date|date('Y-m')}}">{{ad.completion_date|date('F Y')}}</option>
{% endfor %}
我不明白为什么结果会这样改变。我能做什么

编辑 日期为VARCHAR而不是date的字段类型。这是因为我为其构建此文件的客户无法更改Excel中用于创建CSV的日期格式。因此,该日期以英国格式上传,此时我将该日期重新格式化为当前日期

下面是
fetchAll()
的变量转储:

编辑2
我通过细枝迭代结果,如下所示:

2014-01-01
2015-01-01
2014-11-01
2014-12-01
2015-02-01
{% for ad in actdate %}
     <option value="{{ad.completion_date|date('Y-m')}}">{{ad.completion_date|date('F Y')}}</option>
{% endfor %}
{%用于actdate%中的ad}
{{ad.completion{u date}日期('fy')}
{%endfor%}

我们假设
completion\u date
列的数据类型为
date
,并且
YEAR()
MONTH()
函数返回整数值。没有理由不将
orderby
子句传递给MySQL,也没有理由MySQL不遵守这一点。在fetchAll()之后是否可以执行$activeDate的vardump?(我们需要一个数组,
数组([0]=>数组([completion\u date]=>
(我们没有看到的是如何从数组中检索值。)(我认为
$sql4
SQL文本中不需要分号。)我复制了你的代码字母,在我的一个有datetime字段的表上运行了它,它通过条令工作得非常完美。正如@spencer7593所建议的,转储$activeDate。我希望它的顺序正确,并且在你的代码中的某个地方排序是一个问题。添加了更多信息,包括var_转储。该数组看起来是有序的c正确。你是如何迭代结果的?我已经在问题中添加了细枝代码。开始怀疑Symfony2运行查询的方式是这里的问题。