什么是定义一个字段与多个表的关系的正确方法(按条件)

时间:2019-04-01 09:35:58

标签: doctrine-orm relation

我有两个学说实体Order和Item。对于这两个实体,一些相关文件(一个或多个)可以存储在数据库中。文件信息存储在文件实体中。考虑到有时file_owner_id可以引用Order表中的记录,而在其他情况下可以引用Item表中的记录,我需要在File实体内定义关系。文件所有者由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;

    ...

}

但不起作用。尝试保留时出现错误。那么问题是,Doctrine是否有某种方式来定义这种类型的实体关系?

0 个答案:

没有答案