У меня есть две сущности Учения Порядок и Предмет. Для обоих этих объектов некоторые связанные файлы (один или несколько) могут храниться в базе данных. Информация о файле хранится в объекте File. Мне нужно определить отношения внутри сущности File, учитывая, что иногда file_owner_id может ссылаться на запись из таблицы Order, а в других случаях он может ссылаться на запись из таблицы Item. Владелец файла определяется значением поля owner_type.
Я пытался сделать так
/**
* UploadedFile
*
* @ORM\Table(name="uploaded_file", indexes={@ORM\Index(name="file", columns={"file"})})
* @ORM\Entity(repositoryClass="App\Repository\Item\FileRepository")
*/
class File
{
/**
* @var string
*
* @ORM\Column(name="owner_type", type="string", length=0, nullable=false)
* @ORM\Id
* @ORM\GeneratedValue(strategy="NONE")
*/
private $ownerType;
/**
* @ORM\ManyToOne(targetEntity="App\Entity\Item", inversedBy="files")
* @ORM\JoinColumn(name="owner_id", referencedColumnName="id", nullable=false)
*/
private $itemId;
/**
* @ORM\ManyToOne(targetEntity="App\Entity\Order", inversedBy="files")
* @ORM\JoinColumn(name="owner_id", referencedColumnName="id", nullable=false)
*/
private $orderId;
...
}
но это не работает. У меня есть ошибка при попытке сохранить. Итак, вопрос в том, есть ли в Доктрине какой-либо способ определить этот тип отношения сущностей?