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

0

Я использую 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()?

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

Теги:
entity-framework
doctrine
doctrine2

1 ответ

0

Более простой способ - указать каждую взаимосвязь как автономную взаимосвязь в вашем медиа-объекте.

У вас в основном есть свойство, называемое $ 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
    это то, что я сейчас делаю. Я надеялся, что будет что-то, подразумевающее меньше избыточности кода

Ещё вопросы

Сообщество Overcoder
Наверх
Меню