Обновление не удалось, дамп переменной в порядке, но нет изменений в базе данных при сбросе - PullRequest
0 голосов
/ 29 октября 2019

У меня есть форма, где я могу обновить свои сущности. Когда я делаю сброс своей сущности перед сбросом, моя сущность и все ее отношения в порядке. Их значения обновляются, а идентификаторы соответствуют отправленной форме. Но когда я сбрасываю сущность и заглядываю в базу данных, дела идут странно.

Например, в своей форме я гидратирую ее своим Fiche ID 1, который прикреплен к моему идентификатору Demandeur 1. В моем бланке издания я хочу прикрепить Fiche ID 1 к идентификатору Demandeur 2 и иметь возможностьизменить значения Демандера ID 2 тоже. Как я уже сказал, если я выбрасываю Fiche, я вижу, что у Demandeur есть ID 2 с обновленными значениями. При отправке в базе данных Fiche ID 1 по-прежнему привязан к Demandeur 1, а обновленные значения Demandeur 2 установлены на Demandeur ID 1.

Мои сущности:

class FicheSynthese
{
    /**
     * @var int
     *
     * @ORM\Id
     * @ORM\GeneratedValue(strategy="AUTO")
     * @ORM\Column(type="integer")
     */
    protected $id;

    /**
     * @var \Demandeur
     *
     * @ORM\ManyToOne(targetEntity="Demandeur", 
     * inversedBy="ficheSynthese", cascade={"persist"})
     * @ORM\JoinColumn(name="idDemandeur",      referencedColumnName="id")
     */
    private $demandeur;  

     public function getDemandeur(): ?Demandeur
    {
        return $this->demandeur;
    }

    public function setDemandeur(?Demandeur $demandeur): self
    {
        $this->demandeur = $demandeur;

        return $this;
    }
}

class Demandeur
{
    /**
    *@var int
    *
    *@ORM\Id
    *@ORM\GeneratedValue(strategy="AUTO")
    *@ORM\Column(type="integer")
    */
    private $id;

    /**
     *@var Collection|FicheSynthese[]
     *
     *@ORM\OneToMany(targetEntity="FicheSynthese", mappedBy="demandeur",  cascade={"persist"})
     *
     */
    private $ficheSynthese;

    public function __construct()
    {
        $this->ficheSynthese = new ArrayCollection();
    }

/**
     * @return Collection|FicheSynthese[]
     */
    public function getFicheSynthese(): Collection
    {
        return $this->ficheSynthese;
    }

    public function addFicheSynthese(FicheSynthese $ficheSynthese): self
    {
        $ficheSynthese->setDemandeur($this);

          if (!$this->ficheSynthese->contains($ficheSynthese)) {
             $this->ficheSynthese->add($ficheSynthese);
          }

        return $this;
    }

    public function removeFicheSynthese(FicheSynthese $ficheSynthese): self
    {
        if ($this->ficheSynthese->contains($ficheSynthese)) {
            $this->ficheSynthese->removeElement($ficheSynthese);
            // set the owning side to null (unless already changed)
            if ($ficheSynthese->getDemandeur() === $this) {
                $ficheSynthese->setDemandeur(null);
            }
        }

        return $this;
    }

}    

В моемконтроллер, на данный момент у меня есть две формы, одна для Fiche и одна для Demandeur (я работаю над встроенной версией).

$em = $this->getDoctrine()->getManager('fichesynthese');

$formFS = $this->createForm(FicheSyntheseType::class, $fs);   
$formFS->handleRequest($request);

$dem = $fs->getDemandeur(); //Demandeur ID 1
$formsDem = $this->generateFormsDem($request, $dem);
$formsDem->handleRequest($request);

if ($formFS->isSubmitted() && $formFS->isValid()) {   
    if(condition to a new Demandeur) {
        $newDem = $formsDem->getData(); // Demandeur ID 2
        $fs= $formFS->getData();
        $newDem->addFicheSynthese($fs); // Attach Fiche ID 1 to Demandeur ID 2
    }
    $em->persist($fs);
    $em->flush();
    return $this->redirectToRoute('fichsynth_accueil');
}

Я использовал функцию addFicheSynthese, потому что Demandeur владеет отношением между Fiche и Demandeur. Я подозреваю, что проблема с идентификационной картой менеджера организации Demandeur. Как я могу сказать Doctrine для сопоставления менеджера сущности Demandeur с правильным идентификатором Demandeur?

...