2016-03-20 15 views
0

symfony 2.6とtwigを使用する:私の回答は、データベースの多くのユーザによって提供されています。私は、与えられたユーザのためにそれらをすべて編集するフォームを作成したいと思っています。照会されたエンティティの集合からフォームを生成

私は、次のコードでこれらの応答を得る:

コントローラー:

$responses = $this->getDoctrine()->getRepository('AppBundle:Response') 
->findBy(
    array('user' => $usr, 
     'response' => 1, 
     'response' => 2 
    ), 
    array('id' => 'ASC') 
); 

$form = $this->createForm(new ActionType, $responses)->createView(); 

ACTIONTYPE:

public function buildForm(FormBuilderInterface $builder, array $options) 
{ 
    $builder 
     ->add('check', 'entity', array(
      'required' => false, 
      'class' => 'AppBundle:Response', 
      'property'  => 'id', 
      'property_path' => '[id]', 
      'multiple'  => true, 
      'expanded'  => true, 
     )) 
    ; 
} 

public function setDefaultOptions(OptionsResolverInterface $resolver) 
{ 
    $resolver->setDefaults(array(
     'data_class' => null, 
     'csrf_protection' => false 
    )); 
} 

This answerは、私が欲しいまさにんが、私はそれが働いて得ることができません。生成されたフォームは大きすぎます:それは応答テーブル全体を取ります...あなたは何か手掛かりを持っていますか?

答えて

0

ドクトリン遅延ロードのみに依存する場合は、すべて関連エンティティがロードされますが、それはそのように良くて悪いです。特にあなたが水和は、利用可能なすべてのデータの遅延ロードを回避したいエンティティを選択し、上記のように

$responses = $queryBuilder->select('u', 'r') 
       ->from('YourBundle:User', 'u') 
       ->join('u.responses', 'r') 
       ->where('u.id = :userId') 
       ->orderBy('u.id', 'ASC') 
       ->setParameter('userId', $yourUserEntity->getId()) 
       ->getQuery()->getResult(); 

:そうのようなQueryBuilderを使用してデータをフェッチするユーザーのためにあなたの応答をフィルタリングするに

関連する問題