首页 > 解决方案 > 如何在表单构建器中使用带有选择标签的查询构建器?

问题描述

我正在使用带有选择标签的表单构建器查询构建器:

 $options['query_builder'] = function (EntityRepository $er) use ($fieldId) {
        $output = $er->createQueryBuilder('c')
        ->orderBy('c.name', 'ASC');
        return $output;
 };

 $options['choice_label'] = 'category';

它工作得很好,当我尝试获取名称时:

 $options['choice_label'] = 'name';

但我需要的是在我的下拉列表中结合两者,但仍然保持顺序。

   $options['choice_label'] = 'category -> name';

我不知道该怎么做。我很感激任何建议。

标签: phpsymfonyquery-builderformbuilder

解决方案


'choice_label' 也可以与函数(docs)一起使用。

'choice_label' => function (Category $category) {
    return $category->getId() . ' -> ' . $category->getName();
}

要按类别名称排序结果,这应该有效:

'query_builder' => function (EntityRepository $er) use ($fieldId) {
    $output = $er->createQueryBuilder('c')
        ->join('c.category', 'ca')
        ->orderBy('ca.name', 'ASC')
        ->addOrderBy('c.name', 'ASC');
    return $output;
 };

推荐阅读