在父集合中获取重复的子节点

时间:2012-05-29 17:55:48

标签: doctrine-orm many-to-many duplicates

好吧,我在我的学说2中有这个设计:

光盘

id,name

抒情

id,姓名,艺术家

列表(多对多联接表)

id,disc,lyric

因此,当我调用$ disc-> getLyrics()时,它会返回光盘buuut上的当前歌词,它不允许多次使用相同的歌词。我该怎么处理?

修改

在“列表”中我可以看到歌词存储了几次同一张光盘

这些是我的实体

光盘

/**
 * @Entity
 * @Table(name="disc")
 */
class Disc
{

/**
 * @Id @Column(type="integer", nullable=false, name="id_disc")
 * @GeneratedValue(strategy="AUTO")
 */
protected $id;

/**
 * @Column(type="string", nullable=false, name="name")
 */
protected $name;


/**
 * @ManyToMany(targetEntity="Lyric")
 * @JoinTable(name="playlist", 
 *      joinColumns={@JoinColumn(name="disc", referencedColumnName="id_disc")},
 *      inverseJoinColumns={@JoinColumn(name="lyric", referencedColumnName="id_lyric")}
 *      )
 */ 
protected $lyrics;

public function __construct(){
    $this->lyrics = new ArrayCollection();
}

抒情

/**
 * @Entity
 * @Table(name="lyric")
 */
class Lyric
{

/**
 * @Id @Column(type="integer", nullable=false, name="id_lyric")
 * @GeneratedValue(strategy="AUTO")
 */
protected $id;

/**
 * @Column(type="string", nullable=false, name="name")
 */
protected $name;

    /**
 * @Column(type="string", nullable=false, name="artist")
 */
protected $artist;

播放列表(联合表多对多),这是表结构:

id_playlist | disc | lyric  
1           | 1    | 1  
2           | 1    | 1  
3           | 1    | 1   

光盘1有三次歌词。

0 个答案:

没有答案