2012-03-15 11 views
4
$repository = $this->getDoctrine()->getRepository('ParabolaEntityBundle:ProjectAllocation'); 
     $query = $repository->createQueryBuilder('p') 
       ->where('p.startDate < :sdate and p.employee = :emp and p.endDate > :edate') 
       ->setParameter('sdate', date('Y-m-d', time())) 
       ->setParameter('edate', date('Y-m-d', time())) 
       ->setParameter('emp', $employee->getId()) 
       ->getQuery(); 
     $projectAllocate = $query->getResult(); 

FormTypeクラスで上記のコードを使用するにはどうすればよいですか。このクエリを使用してフォームビルダーの選択肢タイプの配列を生成しています。symfony2のフォームタイプクラスでdoctrineリポジトリを取得する方法は?

答えて

6

entityタイプの代わりにquery_builderオプションを使用する必要があります。

このリンク:

http://symfony.com/doc/current/reference/forms/types/entity.html

はそれを行う方法について説明します。

entityタイプを使用したくない場合は、コントローラ内のデータをいつでも取得して、FormTypeコンストラクタ経由で渡すことができます。これはちょっと速いですが、うまく動作するはずです。 ..

コントローラー:

$this->createForm(new MyFormType($results_from_qb), $form_data); 

にformType:

public function __construct($results_from_qb){ 
    $this->results_from_qb = $results_from_qb; // store it into class member field to be used latter in buildForm method 
} 
+0

エンティティフォームでは、ネストされたクエリを使用する方法を入力します。私のケースでは、プロジェクト配備エンティティのプロジェクトエンティティベースを取得する必要があるためです。 –

+0

これを行う方法は間違いありません。これらの2つのエンティティがどのように関連しているか説明してください。ユニ/双方向?基数? –

+1

私も同様の問題があります。私はそれらの間の関係を使用したくない2つのエンティティを持っています。私は関連する質問と答えを見つけました:[FormBuilderにデータを渡す方法](http://stackoverflow.com/questions/6716776/symfony-2-how-to-pass-data-to-formbuilder)と[コントローラからデータを渡す](http://stackoverflow.com/questions/7807388/passing-data-from-controller-to-type-symfony2) – renoirb

関連する問題