さて、私はドクトリン2にこのデザインを持っています:
ディスク
ID、名前
歌詞
ID、名前、アーティスト
リスト (多対多の結合テーブル)
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には歌詞1が3回あります。