如何从symfony 1.4的doctrine查询中的数组键中删除表名

时间:2014-02-16 22:40:16

标签: php doctrine symfony-1.4

如何从结果中的键中删除表名。

$query = Doctrine_Core::getTable('Apps')
       ->createQuery('a')
       ->select("DATE_FORMAT(`created_at`,'%Y/%m') as Month,count(*) as Applications")
       ->groupBy(" year(`created_at`) , month(`created_at`)");
       $query->setHydrationMode(Doctrine::HYDRATE_NONE);

给我一​​些像

的东西
    {
        "a_Month": "2012/09",
        "a_Applications": "3447"
    },
    {
        "a_Month": "2012/10",
        "a_Applications": "565"
    },
    {
        "a_Month": "2012/11",
        "a_Applications": "689"
    }...

我需要得到像

这样的东西
    {
        "Month": "2012/09",
        "Applications": "3447"
    },
    {
        "Month": "2012/10",
        "Applications": "565"
    },
    {
        "Month": "2012/11",
        "Applications": "689"
    }...

如果没有前面的表名,有没有办法做到这一点?

2 个答案:

答案 0 :(得分:1)

我不太了解Doctrine所以可能会有一些原生的东西,但你可以试试这个($arr是你的结果数组):

array_map(function ($k, $v) use (&$arr){

    $ke = str_replace("a_", "", $k);
    $arr[$ke] = $v;
    unset($arr[$k]);

}, array_keys($arr), $arr);

答案 1 :(得分:1)

内部Doctrine使用自己的列名来构建查询。您指定的列名称将在水合过程中应用于结果。因为您使用了HYDRATE_NONE,所以您可以获得Doctrine的名称,因为结果集上没有进行水合作用。

使用HYDRATE_ARRAY模式,您将获得一个包含您自己分配的密钥的数组。