Тип сущности Symfony со значениями из другой сущности

Я все еще новичок в Symfony, и я пытаюсь что-то общее (я думаю).

У меня есть несколько сущностей: продукт, тема, событие, связь один ко многим и много ко одному; поэтому у меня есть другие сущности, называемые products_in_theme, products_in_event.
Тема — это тип вечеринки, в которой используются какие-то товары (например, цвета, бумага и т. Д.).
Когда я сделал мероприятие, мне нужны все или некоторые из этих продуктов, и я должен сохранить эти продукты в products_in_event.
С CraueFormFlowBundle Я создал форму (шаг 1: выберите тему и дату, шаг 2: выберите товар).
Проблема в том, что: мне нужно показать в EntityType «Продукт в событии» (чтобы сохранить это) значения из «Продукта в теме».
Запрос не работает, потому что смотрит из «продукта в событии», а не только «продукта в теме»

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»

1

Решение

Если я правильно понял, вы хотите запросить список ProductInThemes и прикрепить некоторые из этих элементов к вашему products приписывать Events (который должен быть списком ProductInEvents). Это определенно невозможно, поскольку эти два вида сущностей не одинаковы.

Я думаю, что ваша модель не совместима с тем, что вы пытаетесь достичь. Если ProductInTheme а также ProductInEvent оба представления одного и того же вида элементов, но каждый из которых связан с различным типом сущности, почему бы вам не создать Product сущность, создать отношения многие ко многим между Products а также Themes и между Products а также Events, а затем манипулировать Products в вашем query_builder? Вы все еще можете отфильтровать те Products в query_builder, чтобы соответствовать тому, что вы хотите на основе Events а также Themes,

TL; DR: За исключением случаев, когда я неправильно понял вашу проблему, это проблема зачатия, а не проблема реализации. Попробуйте переделать модель, чтобы она лучше соответствовала вашим потребностям.

0

Другие решения

Других решений пока нет …