Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/php/240.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Php 从多对多关系的反向侧保存问题_Php_Doctrine Orm_Symfony - Fatal编程技术网

Php 从多对多关系的反向侧保存问题

Php 从多对多关系的反向侧保存问题,php,doctrine-orm,symfony,Php,Doctrine Orm,Symfony,我有两个实体:AudioPlaylist和AudioTrack AudioPlaylist.php: /** * @ORM\ManyToMany(targetEntity = "AudioTrack", inversedBy = "audioPlaylists") * @ORM\JoinTable(name = "audioplaylist_audiotrack") * * @var ArrayCollection */ protected $audioTracks; AudioTr

我有两个实体:
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\u audioTrack
表不会得到更新。我希望在表中添加一个新行,表示这两个实体之间的关系。尽管
$audioPlaylist->addAudioTrack($audioTrack)
添加了一个新行,但反向操作一切正常


我正在确保持久化
$audioTrack
并刷新实体管理器,但运气不好,因此我认为我的注释一定有问题(我正在使用。有什么想法吗?

这可能是因为您没有为您的反面设置
级联
属性。您必须明确定义Doctrine2才能持久化任何相关实体

/**
 * @ORM\ManyToMany(targetEntity = "AudioPlaylist",
 *                     mappedBy = "audioTracks",
 *                      cascade = {"persist", "remove"})
 * 
 * @var ArrayCollection
 */
protected $audioPlaylists;
在调用
AudioTrack::addAudioPlaylist()
时,确保也将您的
AudioTrack
添加到
AudioPlaylist
中:


$playlist->getAudioTracks()->add($this);
添加到
addAudioPlaylist()
使其工作,但级联选项没有效果。我需要修改
addAudioPlaylist()似乎有些奇怪
但是,这是可行的。特别是因为它是由Symfony@arms我对层叠选项的结果好坏参半,有时有效,有时无效。至于自动生成,它并不完全完美,我建议在遇到困难时使用。您可以阅读更多有关使用关联管理方法的信息从…起
public function addAudioPlaylist(AudioPlaylist $playlist)
{
    $this->getAudioPlaylists()->add($playlist);
    $playlist->getAudioTracks()->add($this);
}