Каков наилучший способ обработки объекта File
, где у вас есть несколько отношений ManyToOne
.Symfony: Обработка файловой сущности
Предположим, у меня есть 5 объектов, которые имеют отношение OneToMany
к объекту File
.
file.php
/**
* @ORM\ManyToOne(targetEntity="Entity1", inversedBy="files")
* @ORM\JoinColumn(name="entity1_id", referencedColumnName="id", nullable=true, onDelete="CASCADE")
*/
private $entity1;
/**
* @ORM\ManyToOne(targetEntity="Entity2", inversedBy="files")
* @ORM\JoinColumn(name="entity2_id", referencedColumnName="id", nullable=true, onDelete="CASCADE")
*/
private $entity2;
and so one....
Entity1.php
/**
* @ORM\OneToMany(targetEntity="File", mappedBy="entity1" , cascade={"persist", "remove"}, orphanRemoval=true)
*/
protected $images;
Самое замечательное выше, является геттер и сеттер установлены, я может сохраняться и сохранять в базе данных автоматически. Связь установлена, и я могу загрузить файлы, просто позвонив $entity1->getFiles()
.
Что мне не нравится - каждый раз, когда я хочу добавить еще одну сущность с OneToMany
с File
, она создает новый столбец в базе данных, поэтому я мог бы иметь 10 столбцов, ссылающихся на Идентификаторы от других объектов.
То, что я хотел бы достичь экономии в класс лица в class
области и сохранение id
в записи в id
поле, но и как-то по-прежнему позволяет сохраняться и сбор экономии на работу.
entity_id | class
------------------------------------------
2 | ProjectBundle/Entity/Entity1
3 | ProjectBundle/Entity/Entity2
Спасибо, Genti. Я понял это и использовал отображение наследования – user742736
Есть ли причина, по которой я больше не могу получить какие-либо результаты, когда я пытаюсь использовать функцию findAll или find? '$ results = $ em-> getRespository ('File-> findAll()' Возвращает пустой массив – user742736
Он не возвращает никаких записей, когда поле столбца 'entityType' пуст. Есть ли способ вернуть это Результаты? – user742736