0

我有以下数据库设置:

Tag (Integer id)
ItemTag (Integer id, Integer tag_id, Integer item_id, Integer item_type)
Artwork (Integer id)
Photo (Integer id)

我尝试使用 ItemTag 中的 item_id 字段作为艺术品 id 和照片 id,如下所示

class ItemTag {
/**
 * @Id @GeneratedValue
 * @Column(type="integer")
 */
private $id;

/**
 * @Column(type="integer")
 */
private $item_type;

/**
 * @ManyToOne(targetEntity="Artwork")
 * @JoinColumn(name="item_id", referencedColumnName="id")
 */
private $artwork;

/**
 * @ManyToOne(targetEntity="Photo")
 * @JoinColumn(name="item_id", referencedColumnName="id")
 */
private $photo;

/**
 * @ManyToOne(targetEntity="Tag")
 */
private $tag;
}

当我尝试保存“照片项目”时,上面的设置不会产生任何错误并且工作正常,但是当保存“艺术品项目”时,item_id 为 NULL。

有没有办法将两种关系保存到一个 item_id 字段中?

4

1 回答 1

1

是的,您可以使用继承。

您可以定义一个抽象类“Item”并让 Photo 和 Artwork 扩展它。

http://www.doctrine-project.org/docs/orm/2.0/en/reference/inheritance-mapping.html

不过,这需要您稍微更改架构。

于 2010-12-28T10:32:13.593 回答