2017-07-27 9 views
0

エンティティからフォームに複数の行を返そうとしています。フォームとコントローラは以下のとおりです。エンティティからフォームへの複数の行をsymfony 3で返す方法

フォーム

namespace AppBundle\Form; 

use Symfony\Component\Form\AbstractType; 
use Symfony\Component\Form\Extension\Core\Type\ChoiceType; 
use Symfony\Component\Form\Extension\Core\Type\NumberType; 
use Symfony\Component\Form\FormBuilderInterface; 
use Symfony\Component\OptionsResolver\OptionsResolver; 

class ExceptionFormType extends AbstractType 
{ 
    public function buildForm(FormBuilderInterface $builder, array $options) 
    { 
     $builder 
      ->add('usrid') 
      ->add('trcode') 
      ->add('cola', NumberType::class, 
       ['scale' => 2]) 
      ->add('colb', NumberType::class, 
       ['scale' => 2] 
      ) 
      ->add('colc', NumberType::class, 
       ['scale' => 2]) 
      ->add('cold') 
      ->add('fringe', ChoiceType::class, 
       array(
        'choices' => array(
         'No' => 0, 
         'Yes' => 1 
        ) 
       )); 

    } 

    public function configureOptions(OptionsResolver $resolver) 
    { 
     $resolver->setDefaults([ 
      'data_class' => 'AppBundle\Entity\Exception' 
     ]); 
    } 

    public function getBlockPrefix() 
    { 
     return 'app_bundle_exception_form_type'; 
    } 
} 

は、ここに私のコントローラこれは動作し、1行分のすべての情報をレンダリングする

public function editExceptions(Request $request, Exception $exception) 
    { 
     $form = $this->createForm(ExceptionFormType::class, $exception); 

     $form->handleRequest($request); 

     if ($form->isSubmitted() && $form->isValid()) { 
      $exceptions = $form->getData(); 

      $em = $this->getDoctrine()->getManager(); 
      $em->persist($exceptions); 
      $em->flush(); 

      $this->addFlash('success', 'Exception Added'); 

      return $this->redirectToRoute('home'); 
     } 

     return $this->render('exceptions/edit.html.twig', [ 
      'exceptionForm' => $form->createView() 
     ]); 
    } 

です。時には、フォームにレンダリングする必要がある行が複数あることがあります。私はデバッグを見て、私はこのSQLを取得します。

SELECT 
    t0.usrid AS usrid_1, 
    t0.trcode AS trcode_2, 
    t0.cola AS cola_3, 
    t0.colb AS colb_4, 
    t0.colc AS colc_5, 
    t0.cold AS cold_6, 
    t0.dept AS dept_7, 
    t0.fringe AS fringe_8, 
    t0.seq AS seq_9, 
    t0.id AS id_10 
FROM 
    exception t0 
WHERE 
    t0.usrid = ? 
LIMIT 
    1 

「LIMIT 1」を削除するにはどうすればよいですか? 私は適切な質問、正しい方法を尋ねているとは確信していません。私はSymfonyを約1ヶ月使っています。私はgoogle、stackoverflow、およびsymfonyのドキュメントを精査しましたが、私が探しているもの、または私が探しているものをどのように正確に見つけることができません。

私は自分自身をより良く説明しようとしています。

|---------|---------|---------|--------|---------|---------|---------| 
| usrid | trcode | cola | colb | colc | cold | fringe | 
|---------|---------|---------|--------|---------|---------|---------| 
| 25  | A  | bill | smith | 2.00 | 4.00 | yes  | 
|---------|---------|---------|--------|---------|---------|---------| 
| 25  | C  | bill | smith | 4.34 | 5.00 | yes  | 
|---------|---------|---------|--------|---------|---------|---------| 
| 25  | F  | bill | smith | 1.54 | 2.76 | no  | 
|---------|---------|---------|--------|---------|---------|---------| 
| 38  | A  | bob  | smith | 2.00 | 4.00 | yes  | 
|---------|---------|---------|--------|---------|---------|---------| 
| 56  | L  | maggie | smith | 2.00 | 4.00 | yes  | 
|---------|---------|---------|--------|---------|---------|---------| 
| 21  | G  | mark | smith | 2.00 | 4.00 | yes  | 
|---------|---------|---------|--------|---------|---------|---------| 

これは私のテーブルの外観です。フォーム上では、最初の3行を表示する必要があります。なぜなら、それらは同じusridだからです。私は他の行を表示する方法を知っているので、かなり簡単です。これは1つのエンティティのみを使用しています。私はどのリポジトリにも参加していないし、使用していない。

+0

は何が言いたいん:

は見をお持ちですか?あなたは多くのエンティティを取得したいですか?そして、n回繰り返す? – mpiot

+0

はい。私は同じusrid、しかし異なるcola、colb、colc、cold、およびfringeデータのうちの5つを持つことができます。 – moe

+0

Mmm、1つのエンティティの1つのフォームですが、コーラ、コルブなどのコレクションが必要ですか?エンティティを追加できますか?私はあなたが欲しいものを理解していないので – mpiot

答えて

0

あなたの質問が分かっている場合は、ユーロを共有していても、1行に1つのフォーム(ExceptionFormType)が必要です。同じusridで5つの行を(あなたのコメントごとに)持つことができれば、5つのフォームが必要になることを意味しますが、すべて親フォームに埋め込むことができます。

エンティティは、usridごとに1つの行だけが存在する別のエンティティに属しているように見えます(ユーザと呼ぶ)。

基本的に、あなたのExceptionFormTypeのフォームを含むフォームを作成したいとします。 https://symfony.com/doc/current/form/form_collections.html

関連する問題