Php 原则2按自定义列列出的本机查询顺序

Php 原则2按自定义列列出的本机查询顺序,php,sql,doctrine-orm,Php,Sql,Doctrine Orm,在本机查询原则2中,我对结果的自定义排序有问题。我已在服务器上测试了此SQL: SELECT c.id, c.is_verified, c.email, c.phone, i.id as identityId, i.firstname, i.lastname, g.id as groupId, g.name as groupName, r.id as roleId, r.name as roleName FROM UserCredential c JOIN

在本机查询原则2中,我对结果的自定义排序有问题。我已在服务器上测试了此SQL:

SELECT
    c.id, c.is_verified, c.email, c.phone, i.id as identityId,
    i.firstname, i.lastname, g.id as groupId, g.name as groupName,
    r.id as roleId, r.name as roleName
FROM
    UserCredential c
JOIN
    UserIdentity i
ON
    i.id = c.identity_id
JOIN
    Role r
ON
    r.id = c.role_id
LEFT JOIN
    `Group` g
ON
     g.id = c.group_id
ORDER BY
     i.firstname ASC
LIMIT
    10
OFFSET
    0
一切正常,但当我在自定义存储库中将其重写为本机查询时:

    $query = $this->_em->createNativeQuery('
        SELECT
            c.id,
            c.is_verified,
            c.email,
            c.phone,
            i.id as identityId,
            i.firstname,
            i.lastname,
            g.id as groupId,
            g.name as groupName,
            r.id as roleId,
            r.name as roleName
        FROM
            UserCredential c
        JOIN
            UserIdentity i
        ON
            i.id = c.identity_id
        JOIN
            Role r
        ON
            r.id = c.role_id
        LEFT JOIN
            `Group` g
        ON
            g.id = c.group_id
        ORDER BY
            :orderBy
        LIMIT
            :lmt
        OFFSET
            :ofs
    ', $rsm);

    $query->setParameter('orderBy', implode(', ', $orderBy));
    $query->setParameter('lmt', $limit);
    $query->setParameter('ofs', $offset);
其中$orderBy是数组$column=>$orderType

但是,如果我按参数更改订单,则此查询的结果总是以默认顺序(c.id ASC)返回


我已经测试过了,生成的查询还可以,但我不知道为什么默认情况下结果总是按顺序排列的。原则2是否以某种方式忽略了ORDER BY?

应该不是(忽略ORDER BY对于本机查询没有任何意义,对吧?)。但可能缓存了什么?不,我正在开发中运行它,所以有ArrayCache,这意味着它只缓存每个请求。好的,我已经解决了这个问题。不能将order by params作为参数传递给子句。它必须在字符串中设置('ORDER BY'。内爆(…)。…')。啊,那么这可能是相关的-您使用的是哪个数据库驱动程序?另外,请在下面添加您的解决方案作为答案。我想您为我节省了几个小时:)