Ste*_*nte 2 php symfony doctrine-orm
我有两个实体:AudioPlaylist和AudioTrack.
AudioPlaylist.php:
/**
* @ORM\ManyToMany(targetEntity = "AudioTrack", inversedBy = "audioPlaylists")
* @ORM\JoinTable(name = "audioplaylist_audiotrack")
*
* @var ArrayCollection
*/
protected $audioTracks;
Run Code Online (Sandbox Code Playgroud)
AudioTrack.php:
/**
* @ORM\ManyToMany(targetEntity = "AudioPlaylist", mappedBy = "audioTracks")
*
* @var ArrayCollection
*/
protected $audioPlaylists;
Run Code Online (Sandbox Code Playgroud)
我的问题是,当我打电话时$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;
Run Code Online (Sandbox Code Playgroud)
请确保您还您添加AudioTrack到AudioPlaylist为好,打电话时AudioTrack::addAudioPlaylist():
public function addAudioPlaylist(AudioPlaylist $playlist)
{
$this->getAudioPlaylists()->add($playlist);
$playlist->getAudioTracks()->add($this);
}
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
804 次 |
| 最近记录: |