我怎样才能把一行排到第一位?

How can I order a row into first position?

我有这个表格:

$builder
    ->add('restaurantsFilter1', 'entity', [
        'label'       => 'Commune',
        'empty_value' => 'Dans toute la Narbonnaise',
        'class'       => 'AppBundle:City',
        'choice_label'    => 'name',
        'query_builder' => function (EntityRepository $er) {
            return $er
                ->createQueryBuilder('c')
                ->addSelect('d')
                ->leftJoin('c.documents', 'd')
                ->where('d.type = :type')
                ->orderBy('c.name')
                ->setParameter('type', Document::T_VILLAGE)
            ;
        },
    ])

这是一个显示城市列表的 select。

一位客户告诉我他需要一个字段 "Around me" 来显示 20 公里周围的所有城市。

为此,我在数据库中用这个名称创建了一个新城市,但现在我需要将它放在 select.

的第一个位置

在 sql 中,我会使用类似 ORDER BY (insee_code= '[specific_code_of_the_city]') 的东西,但我不知道如何使用查询构建器。

您知道我如何使用 symfony 查询生成器来做到这一点吗?

编辑:这正是 How do I return rows with a specific value first?

的确切问题

您可以创建一个隐藏字段并以此排序。

return $er
    ->createQueryBuilder('c')
    ->addSelect('CASE
                     WHEN c.name = "specific_code_of_city"
                     THEN 0
                     ELSE 1
                 END as HIDDEN presetOrder')
    ->addSelect('d')
    ->leftJoin('c.documents', 'd')
    ->where('d.type = :type')
    ->orderBy('presetOrder', 'ASC')
    ->addOrderBy('c.name', 'ASC')
    ->setParameter('type', Document::T_VILLAGE)
;