在 Symfony2 表单中,当尝试获取实体时,Symfony 期望接收 QueryBuilder 对象,但有时没有返回实体。在这种情况下,会出现一条错误消息:
“Doctrine\ORM\QueryBuilder”类型的预期参数,给出“NULL”
如何使 query_builder 允许没有可用实体的选项。
$builder
->add('client', 'entity', array(
'class' => 'Faktura\FakturaBundle\Entity\Client',
'query_builder' => function(\Web\MyBundle\Repository\ClientRepository $er) use ($company){
return $er->getClients($company);
))
;
ClientRepository.php
public function getClients($company)
{
$qb = $this->createQueryBuilder('c')
->select('c')
->where('c.company = :company')
->setParameter('company', $company)
->getQuery();
return $qb->getResult();
}
实际上,这只是基本$er->findBy(array('company' => $company))
方法,但我使用自定义getClients()
方法