1

私はまだ Symfony を使い始めたばかりで、(私が思うに) 一般的なことを試しています。

私はいくつかのエンティティを持っています: 製品、テーマ、イベント、1 対多および多対 1 の接続。私はproducts_in_theme、products_in_eventと呼ばれる他のエンティティを持っています。テーマとは、ある種の製品 (色、紙など) を使用する一種のパーティーです。イベントを作成したとき、その商品のすべてまたは一部が必要になり、その商品を products_in_event に保存する必要があります。CraueFormFlowBundleを使用して、フォームを作成しました (ステップ 1: テーマと日付の選択、ステップ 2: 製品の選択)。問題は、EntityType の「Product in Event」(それを永続化するために)、「Product In Theme」の値を表示する必要があることです。「テーマ内の製品」のみではなく「イベント内の製品」から検索しているため、クエリは機能しません

public function buildForm(FormBuilderInterface $builder, array $options)
{
    $theme= $options['theme'];
    $builder
        ->add('products', EntityType::class, array(
            'class' => 'AppBundle\Entity\ProductInEvent',
            'expanded'=>'true',
            'multiple' => 'true',
            'query_builder' => function (EntityRepository $er) use ($theme){
                return $er->createQueryBuilder('product_in_event')
                    ->from('AppBundle:ProductInTheme', 'product_in_theme')
                    ->where('product_in_theme.theme = :theme')
                    ->setParameter('theme', $theme);
            }

        ));

}

クエリは次のとおりです。

SELECT p0_.id AS id_0, p0_.price AS price_1, p0_.event_id AS event_id_2, p0_.product_id AS product_id_3 
FROM product_in_event p0_, product_in_theme p1_ 
WHERE p1_.theme_id = 27;`

0 エントリを返します (product_in_event が空であるため)

Update 2015/02/01
I've some entities:
Product:
-Id, Name, quantity, price

Event:
Id, Name, Products (mapped by product_id in product_in_event)

Product_In_Event:
Id, Event_id, Product_id (inversed by products in Event)

Theme
Id, Name, Products (mapped by theme_id)

Product_in_theme:
Id, Product_id, Theme_id (inversed by products in theme)

これは共通の接続です。イベント内の製品には、イベントと製品に関連するいくつかの FK があります。

次のような状況を表示できます: カテゴリと製品。何かを購入すると、「product_in_category」が「product_in_order」になりました

4

1 に答える 1