symfony - doctrine2 按带有 ids 的数组排序

标签 symfony doctrine-orm doctrine-odm doctrine-query

我如何使用doctrine2通过带有ids的数组进行排序?

我有这个查询:

$qb = $this->createQueryBuilder('u')
        ->select('u', 'n', 'c')
        ->leftJoin('u.notifications', 'n')
        ->leftJoin('u.channel', 'c')
        ->andWhere('u.id IN (:ids)')
        ->setParameter('ids', $ids);

我希望结果与带有 ids 的数组具有相同的顺序,可以吗?

谢谢

解决方案:

使用FIELD mysql扩展https://github.com/beberlei/DoctrineExtensions

:)

谢谢

最佳答案

不需要预排序查询结果的简单解决方案:

 $idPositions = array_flip($userIds); // Mapping of id to position
 usort($users, function($userA, $userB) use ($idPositions) {
     return $idPositions[$userA->id] - $idPositions[$userB->id];
 });

关于symfony - doctrine2 按带有 ids 的数组排序,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/23834457/

相关文章:

php - 扩展 Symfony2 Controller 解析器

php - Symfony2,EntityManager::getRepository(命名空间\To\Some\Class::class 或 '**Bundle:Entity')

Symfony 2.2 Doctrine ResolveTargetEntities 监听器

交响乐团 : Overriding Twig's routing path function

php - 使用 Native SQL 的 Doctrine 查询总是返回空数组

php - api-platform odm iri 引用不会被转换成 json 中的对象

mongodb - Doctrine2 MongoDB ODM 复合键(UniqueEntity)

php - 从缓存中检索实体时获取相关的 Doctrine2 实体

php - Doctrine2 默认时间戳格式为 "0000-00-00 00:00:00"?

javascript - 测试 MongoDB 中未设置或缺失的字段