0
私は次のデータベースのセットアップがあります。Doctrine2 - 一つのフィールドに複数の関係
Tag (Integer id)
ItemTag (Integer id, Integer tag_id, Integer item_id, Integer item_type)
Artwork (Integer id)
Photo (Integer 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;
}
以下のような作品のIDと写真付きの身分証明書の両方のためにItemTag中のitem_idフィールドを使用してみました上記の設定ではエラーは発生せず、「写真アイテム」を保存しようとすると問題なく動作しますが、「アートワークアイテム」を保存するとitem_idはNULLになります。
両方のリレーションを1つのitem_idフィールドに保存できる方法はありますか?
ありがとう、これは私が探していたものとまったく同じです。しかし、DBの変更が必要かどうかはわかりません。私はこの例に従ってみましたが、ItemTag $ itemプロパティで次のように設定すると、Item(スーパークラス)に列 "id"が足りなくなっているというメッセージが表示されます... @ManyToOne(targetEntity = "Item") @JoinColumn = "item_id"、referencedColumnName = "id") – YiSh