簡體   English   中英

從多對多關系的反面保存問題

[英]Problem saving from inversed side of many-to-many relationship

我有兩個實體: AudioPlaylistAudioTrack

AudioPlaylist.php:

/**
 * @ORM\ManyToMany(targetEntity = "AudioTrack", inversedBy = "audioPlaylists")
 * @ORM\JoinTable(name = "audioplaylist_audiotrack")
 *
 * @var ArrayCollection
 */
protected $audioTracks;

AudioTrack.php:

/**
 * @ORM\ManyToMany(targetEntity = "AudioPlaylist", mappedBy = "audioTracks")
 * 
 * @var ArrayCollection
 */
 protected $audioPlaylists;

我的問題是,當我打電話$audioTrack->addAudioPlaylist($audioPlaylist)audioplaylist_audiotrack表沒有更新。 我期望將新行添加到表中,以表示兩個實體之間的關系。 盡管$audioPlaylist->addAudioTrack($audioTrack)添加了新行,但一切工作正常。

我確保堅持$audioTrack並刷新實體管理器,但是沒有運氣,所以我認為我的注釋一定存在問題(我使用的是Doctrine文檔中的示例) 有任何想法嗎?

這可能是因為您尚未為反面設置cascade屬性。 您必須為Doctrine2明確定義級聯 ,以保留所有相關實體。

/**
 * @ORM\ManyToMany(targetEntity = "AudioPlaylist",
 *                     mappedBy = "audioTracks",
 *                      cascade = {"persist", "remove"})
 * 
 * @var ArrayCollection
 */
protected $audioPlaylists;

確保在調用AudioTrack::addAudioPlaylist()時也將AudioTrack也添加到AudioPlaylist中:

public function addAudioPlaylist(AudioPlaylist $playlist)
{
    $this->getAudioPlaylists()->add($playlist);
    $playlist->getAudioTracks()->add($this);
}

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM