繁体   English   中英

Sonata 管理员获取现有的查询生成器

[英]Sonata admin get existing query builder

请帮助找出以下内容:

我有以下代码:

/**
 * @param FormMapper $formMapper
 */
public function configureFormFields(FormMapper $formMapper)
{
    $formMapper
        ->add('sitter', EntityType::class, [
            'class'         => User::class,
            'query_builder' => function (EntityRepository $entityRepository) {
                return $entityRepository->createQueryBuilder('u')
                    ->andWhere('u.roles like :role')
                    ->setParameter('role', '%' . 'ROLE_STAFF' . '%');
            }
        ], ['admin_code' => 'admin.user'])
    ;

问题是我的自定义查询 bulder 替换了我的表单中已经定义的值,所以每次我需要从下拉列表中从头开始选择已经定义的值。 例如,如果我删除query_builder选项,那么我将获得整个用户列表,但我只需要员工用户。 如何使用现有的查询 bulder 而不是创建新的?

我找到了解决方案。 我必须添加choice_value属性:

->add('sitter', EntityType::class, [
            'class'         => User::class,
            'choice_value' => 'fullName',
            'query_builder' => function (EntityRepository $entityRepository) {
                return $entityRepository->createQueryBuilder('u')
                    ->andWhere('u.roles like :role')
                    ->setParameter('role', '%' . 'ROLE_STAFF' . '%');
            }
        ], ['admin_code' => 'admin.user'])

fullName是 User 实体内部的一个方法

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM