Лучше всего связать сущность с несколькими другими с помощью symfony2 / doctrine 2

Я использую symfony2 и doctrine 2, и у меня есть медиа-объект, который я использовал для хранения файлов, связанных со многими другими объектами в отношениях oneToMany. Итак, у меня есть рецепты, продукты, пользователи, соискатели, recipeSteps и т. Д., И все они имеют ссылку на медиа-объект.

Теперь у меня есть 13 из этих других объектов, связанных со СМИ, и это становится немного грязным.
Пример :

/**
* @ORM\ManyToOne(targetEntity="\AppBundle\Entity\FoodAnalytics\Recipe", inversedBy="medias")
* @ORM\JoinColumn(name="recipeId", referencedColumnName="id", onDelete="CASCADE")
*/
private $recipe;

/**
* @ORM\ManyToOne(targetEntity="\AppBundle\Entity\FoodAnalytics\RecipeStep", inversedBy="medias")
* @ORM\JoinColumn(name="recipeStepId", referencedColumnName="id", onDelete="CASCADE")
*/
private $recipeStep;

Нет ли более простого способа управления этим, который позволил бы мне использовать сопоставление ORM: recipe-> getMedias () и media-> getRecipe ()?

Большое спасибо !

0

Решение

Более простой способ — указать каждое отношение как отдельное отношение в вашей сущности Media.

У вас есть свойство $ medias, которое в настоящее время содержит 13 отношений. Разделите эти 13 на фактические отношения, такие как Recipe и RecipeStep, чтобы у вас было 13 свойств вместо 1.
Затем создайте открытый метод в вашей сущности Media, который называется getMedias, который возвращает все связанные сущности.

Другой вариант — использовать Mapped Superclass и расширять ваши Entities из него, но это потребует некоторого рефакторинга для реализации.
http://doctrine-orm.readthedocs.org/en/latest/reference/inheritance-mapping.html#mapped-superclasses

0

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

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

По вопросам рекламы ammmcru@yandex.ru
Adblock
detector