我正在研究一个现有的Symfony 3.3项目,并被要求在结果过滤器表单中注册一个下拉字段,该字段应包含数据库中某个字段的所有值。
直到现在,我所做的是部分起作用的以下内容:
append
上面的代码能够正确显示这些值,但是不幸的是,由于该表反复具有相同的值,所以我得到了一长串所有相同值的列表。
相反,我需要实现的是显示数据库中的def schedule_off():
days_off = input("Please enter your days off:").split(' ')
print(days_off)
sch_days_off.extend(days_off)
print("This is how many days you have off: ")
值。
我已经尝试过使用query_builder,但是老实说我不确定我是否使用正确,因为我不是经验丰富的Symfony开发人员。
关于如何显示带有
$builder->add(
'newField',
EntityType::class,
[
'class' => Transaction::class,
'required' => false,
'multiple' => false,
'label' => 'New Field',
'choice_label' => 'newField',
'placeholder' => 'Choose a value'
]
)
结果的给定列条目的任何想法?
答案 0 :(得分:2)
正如您自己说的那样,您可以使用查询构建器来实现此目的。像这样简单的事情应该可以实现您的追求:
->add('fooBar', EntityType::class, [
'query_builder' => function (EntityRepository $repository) {
return $repository
->createQueryBuilder('f')
->distinct();
},
]);
您还可以指定一个标志来区分,并记住不要返回结果而是返回查询。您可以阅读更多here
答案 1 :(得分:1)
你是对的
Query_builder是必经之路。
因此,首先在 TransactionRepository 中创建您要执行的操作的方法。
class TransactionRepository extends EntityRepository
{
//....
public function getDistinctValues()
{
//Return what you want to get, I cannot write this for you without your entity
}
}
然后在 FormType 中使用它:
$builder->add(
'newField',
EntityType::class,
[
'class' => Transaction::class,
'required' => false,
'multiple' => false,
'label' => 'New Field',
'choice_label' => 'newField',
'placeholder' => 'Choose a value',
'query_builder' => function(TransactionRepository $repository) {
return $repository->getDistinctValues();
}
]
)
你应该很好。