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()
方法を使用しています