Извините за название, его довольно сложно описать всего несколькими словами.Вот проблема:
У меня есть клиентская сущность, которая имеет OneToMany с веб-сайтом и customerTrackingIds:
class Customer {
...
/**
* @var ArrayCollection
* @Serializer\Exclude()
* @ORM\OneToMany(targetEntity="AppBundle\Entity\WebSite", mappedBy="customer",cascade={"persist","remove"},orphanRemoval=true)
*/
private $webSites;
/**
* @var ArrayCollection
* @Serializer\Exclude()
* @ORM\OneToMany(targetEntity="AppBundle\Entity\CustomerTrackingId", mappedBy="customer",cascade={"persist","remove"})
*/
private $customerTrackingIds;
...
}
И веб-сайт:
class WebSite {
/**
* @var Customer
* @Serializer\MaxDepth(1)
* @ORM\ManyToOne(targetEntity="AppBundle\Entity\Customer", inversedBy="webSites")
* @ORM\JoinColumn(nullable=true, onDelete="SET NULL")
*/
private $customer;
/**
* @var ArrayCollection
* @Serializer\Exclude()
* @ORM\OneToMany(targetEntity="AppBundle\Entity\CustomerTrackingId", mappedBy="website")
*/
private $customerTrackingIds;
}
У клиента несколько веб-сайтов инесколько идентификационных номеров.Каждый идентификатор отслеживания связан с одним из веб-сайтов клиента, но для одного и того же веб-сайта может существовать больше идентификационных номеров.
Я использую https://github.com/ninsuo/symfony-collection для обработки набора идентификаторов сайта / отслеживания на той же странице, но когдая иду редактировать информацию, что происходит нечто действительно странное (по крайней мере, для меня).
Просматривая сеанс отладчика, я увидел, что когда форма загружает данные из submit в моем контроллере:
$formCustomer = $this->createForm( CustomerFormType::class, $customer );
$formCustomer->handleRequest( $request );
if ( $formCustomer->isSubmitted() && $formCustomer->isValid() ) {
$em = $this->getDoctrine()->getManager();
$em->persist( $customer );
$em->flush();
Когда запрос обрабатывается, все элементы TrackingIds правильно устанавливают свой веб-сайт, но внутри веб-сайта клиентская ссылка теряется (становится нулевой).Затем происходит следующее: когда все данные сохраняются, я теряю в своей базе данных физическую связь между веб-сайтом <-> клиент (клиент становится нулевым)
Как я могу это исправить?