[英]Sonata admin get existing query builder
please help to find out the following:请帮助找出以下内容:
I have the following code:我有以下代码:
/**
* @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'])
;
The problem is that my custom query bulder replaces already defined value in my form, so every time I need to select from scratch already defined value from the dropdown.问题是我的自定义查询 bulder 替换了我的表单中已经定义的值,所以每次我需要从下拉列表中从头开始选择已经定义的值。 For example if I remove query_builder option, then I will get the whole list of users, but I need only staff users.
例如,如果我删除query_builder选项,那么我将获得整个用户列表,但我只需要员工用户。 How can I use existing query bulder instead of creating the new one?
如何使用现有的查询 bulder 而不是创建新的?
I found the solution.我找到了解决方案。 The I had to add choice_value attribute:
我必须添加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 is a method inside of User entity fullName是 User 实体内部的一个方法
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.