繁体   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