我有这样的表格:
$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)
;
},
])
这是一个显示城市列表的选择。
一位客户告诉我他需要一个“我周围”的字段,它将显示20公里左右的所有城市。
所以,为此,我使用此名称在我的数据库中创建了一个新城市,但现在我需要将它放在我选择的第一个位置。
在sql中我会使用像ORDER BY (
insee_code = '[specific_code_of_the_city]')
这样的东西,但我不知道如何使用查询构建器。
您是否知道如何使用symfony查询构建器执行此操作?
的确切问题答案 0 :(得分:1)
你可以创建一个隐藏的字段并按顺序排序。
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)
;