Доктрина 2 взаимоисключающих отношений - PullRequest
1 голос
/ 26 декабря 2011

У меня есть объект Content, связанный с FileImage или FileVideo. Как правильный способ сделать это в Учении 2?

Содержимое должно относиться к FileImage или FileVideo, ни к обоим, ни к каким никогда.

Какой рабочий пример для решения вышеизложенного с использованием синтаксиса аннотаций?


Или, может быть, я смотрю на это неправильно?

Моя дизайнерская идея; Файлы хранятся с использованием MogileFS, которая хранит несколько копий каждого файла на подмножестве серверов, проиндексированных по именам файлов. FileVideo содержит список имен файлов для различных свойств (миниатюра, изменение размера и т. Д.), Которые различаются в зависимости от типа файла (E.G FileVideo и FileImage). Пути к самим файлам будут загружаться с помощью отношения FileVideo к преобразователю MogileFS вне Doctrine 2. Бизнес-логика должна касаться только модели содержимого, содержащей ref

1 Ответ

2 голосов
/ 27 декабря 2011

Рассмотрим какое-то наследство.FileVideo и FileImage могут быть подклассами некоторой родительской сущности «Файл», а ваша сущность Контента будет иметь отношение @OneToOne или @ManyToOne к «Файлу».Вы были бы предоставлены вашим собственным устройствам, чтобы гарантировать, что Content.file не является нулевым.

Обратите внимание, что в этом случае есть выбор между реализацией наследования таблиц классов и одной таблицы.CTI предоставит более нормализованную схему и, возможно, будет более гибким, если ваш граф наследования, вероятно, будет расти, но заставит доктрину всегда стремиться к загрузке отношения

...