[英]Problem saving from inversed side of many-to-many relationship
我有两个实体: AudioPlaylist
和AudioTrack
。
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.