Как правильно определить отношение одного поля к нескольким таблицам (по условию) - PullRequest
0 голосов
/ 01 апреля 2019

У меня есть две сущности Учения Порядок и Предмет. Для обоих этих объектов некоторые связанные файлы (один или несколько) могут храниться в базе данных. Информация о файле хранится в объекте 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;

    ...

}

но это не работает. У меня есть ошибка при попытке сохранить. Итак, вопрос в том, есть ли в Доктрине какой-либо способ определить этот тип отношения сущностей?

...