我在doctrine2中遇到了ManyToMany关系问题。即使存在关系,关系也不会持续存在。如果我检查两个foreach循环中的持久性,则返回正确的对象。
第一堂课是文件。
class Document extends BaseEntity
{
....
/**
* @ORM\ManyToMany(targetEntity="Job", mappedBy="documents", cascade={"all"})
* @ORM\JoinTable(name="job_document")
*/
protected $jobs;
....
第二类是Job
class Job extends BaseEntity
{
....
/**
* @ORM\ManyToMany(targetEntity="Document", inversedBy="jobs", cascade={"all"})
* @ORM\JoinTable(name="job_document")
*/
protected $documents;
....
在我的控制器中,我执行以下操作:
$job->addDocument($document);
$document->addJob($job);
$em->persist($job);
$em->flush();
添加功能正常。当我执行此操作时,我可以看到它。
答案 0 :(得分:0)
在我看来,你只是试图更新反面,而不是关系的拥有方。
正如doctrine documentation中指出的那样:
忽略仅对关联的反面进行的更改。 确保更新双向关联的两侧(或在 至少是拥有方,从学说的角度来看)