在 AcmePizza BUndle 中,这工作正常
->add('pizza', 'entity', array(
'class' => 'Acme\PizzaBundle\Entity\Pizza',
'query_builder' => function ($repository) { return $repository->createQueryBuilder('p')->orderBy('p.name', 'ASC'); },
))
我可以在集合中做类似的事情
->add('userTasks','collection',array('type' => new UserTaskType(),
'class' => 'acme\myBundle\Entity\UserTask',
'query_builder' => function ($repository) { return $repository->createQueryBuilder('p')->orderBy('p.name', 'ASC'); },
))
最佳答案
假设您的 userTasks 是一种关系,您将找到您的案例的答案 here 。这些只是如何排序,但如果您需要一些 WHERE 条件,那就不是那么简单,但也不难。
我必须过滤掉一些实体,解决这个问题的关键是在实体类中创建 set/get 方法返回所需的集合。
就我而言,它看起来像这样
/**
* Set values
*
* @param ArrayCollection $values
* @return Attribute
*/
public function setCustomValues($values)
{
$result = $this->getNotCustomValues();
foreach ($values as $value)
{
$value->setAttribute($this);
$result->add($value);
}
$this->values = $result;
return $this;
}
/**
* Get values
*
* @return \Doctrine\Common\Collections\Collection
*/
public function getCustomValues()
{
$result = new ArrayCollection();
foreach ($this->values as $value) {
if($value->getCustom()) {
$result->add($value);
}
}
return $result;
}
创建表单时,字段名称为“customvalues”而不是“values” 因此,我的集合仅包含自定义字段为 true 的值。
关于php - 我可以在表单生成器中使用查询来获取 symfony 表单中的过滤集合吗,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11792015/