好吧,我的学说 2 上有这样的设计:
光盘
身份证,姓名
歌词
身份证、姓名、艺术家
列表(多对多的连接表)
id, 唱片, 歌词
因此,当我调用 $disc->getLyrics() 时,它会返回光盘上的当前歌词,但它不允许多次使用相同的歌词。我该如何处理?
编辑:
在“列表表”中,我可以看到同一张光盘多次存储的歌词
这些是我的实体
光盘
/**
* @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 有 3 次歌词 1。