У меня проблема с моим отношением ManyToMany в doctrine2. Соотношение не сохраняется, даже если отношение существует. Если я проверю, сохраняются ли в двух циклах 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();
Функции добавления работают нормально. Я могу видеть это, когда я прохожу через объекты, и я это делаю.
Мне кажется, что вы только пытаетесь обновить обратную сторону, а не собственную сторону отношений.
Как указано в документации доктрины :
Изменения, внесенные только в обратную сторону ассоциации, игнорируются. Не забудьте обновить обе стороны двунаправленной ассоциации (или, по крайней мере, стороны-владельца, с точки зрения Доктрины)