好吧,我在我的学说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有三次歌词。