次のデータベース設定があります。
Tag (Integer id)
ItemTag (Integer id, Integer tag_id, Integer item_id, Integer item_type)
Artwork (Integer id)
Photo (Integer id)
以下のように、アートワークIDと写真IDの両方にItemTagのitem_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 フィールドに保存できる方法はありますか?