簡體   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