Php 原则2按自定义列列出的本机查询顺序
在本机查询原则2中,我对结果的自定义排序有问题。我已在服务器上测试了此SQL: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
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'。内爆(…)。…')。啊,那么这可能是相关的-您使用的是哪个数据库驱动程序?另外,请在下面添加您的解决方案作为答案。我想您为我节省了几个小时:)