0

好吧,我的学说 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。

4

0 回答 0