创建链接实体时删除Symfony实体

时间:2018-07-13 08:56:19

标签: php symfony doctrine symfony-3.4

我在创建实体Annonce时遇到问题。在Annonce中,我有一个Categorie

创建Annonce曾经有用,但是现在,它不再起作用了(我不知道为什么)。

当我提交创建表单时,所有类别都会被删除(我在教义分析器中看到它),然后它尝试保存名称,但是我在表单中选择的类别已不存在,因为它已被删除就在之前。

我不知道为什么要删除这些内容。 这是我的代码:

AnnonceController newAction:

/**

 * Creates a new annonce entity.

 *

 * @Route("/nouvelle", name="ad_new")

 * @Method({"GET", "POST"})

 */

public function newAction(Request $request)

{

    $annonce = new Annonce();



    if ($this->get('security.authorization_checker')->isGranted('IS_AUTHENTICATED_REMEMBERED')) {

        $annonce->setUser($this->getUser());

    }



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

    $repoCategorie = $em->getRepository('AnnoncesBundle:Categorie');

    $rootCategories = $repoCategorie->findRootCategories();



    foreach ($rootCategories as $rootCategory)

    {

        $rootCategory->setEnfants($repoCategorie->findByParent($rootCategory));

    }



    $form = $this->createForm('AnnoncesBundle\Form\AnnonceType', $annonce);

    $form->handleRequest($request);





    if ($form->isSubmitted() && $form->isValid()) {



        $annonce->setComplexId(uniqid('', true));

        $annonce->setDateCreation(new \DateTime("now"));

        $annonce->setDateModification(new \DateTime("now"));



        $em->persist($annonce);

        $em->flush();



        // On traite les image

        $this->gerePhotos($annonce);





        $stat = $em->getRepository("AppBundle:Stats")->find(1);

        $stat->setNbAnnonces($stat->getNbAnnonces() + 1);



        $em->flush();



        $urlHelper = $this->container->get('AppBundle\Services\UrlHelper');

        return $this->redirectToRoute('ad_confirme', array('id' => $annonce->getId(), 'complexId' => $annonce->getComplexId()));

    }



    return $this->render('annonce/new.html.twig', array(

        'annonce' => $annonce,

        'form' => $form->createView(),

        'categories' => $rootCategories

    ));

}

CategorieAnnonce实体中定义如下:

/**
* @ORM\ManyToOne(targetEntity="AnnoncesBundle\Entity\Categorie")
 * @ORM\JoinColumn(name="categorie_code", referencedColumnName="code")
 * @Assert\NotBlank(message="Merci de renseigner la catégorie")
*/
private $categorie;

Categorie实体代码:

<?php

namespace AnnoncesBundle\Entity;

use Doctrine\ORM\Mapping as ORM;

/**
 * Categorie
 *
 * @ORM\Table(name="categorie")
 * @ORM\Entity(repositoryClass="AnnoncesBundle\Repository\CategorieRepository")
 */
class Categorie
{
    /**
     * @var string
     *
     * @ORM\Column(name="nom", type="string", length=255)
     */
    private $nom;

    /**
     * @var int
     *
     * @ORM\Column(name="position_affichage", type="integer")
     */
    private $positionAffichage;

    /**
     * @var string
     * @ORM\Id
     * @ORM\Column(name="code", type="string", length=255)
     */
    private $code;


    /**
     * Many Categories have One Category.
     * @ORM\ManyToOne(targetEntity="AnnoncesBundle\Entity\Categorie", inversedBy="enfants")
     * @ORM\JoinColumn(name="parent_code", referencedColumnName="code", nullable=true)
     */
    private $parent;

    /**
     * One Category has Many children Categories.
     * @ORM\OneToMany(targetEntity="AnnoncesBundle\Entity\Categorie", mappedBy="parent",orphanRemoval=true,  cascade={"remove"})
     */
    private $enfants;

    public function __construct() {
        $this->enfants = new \Doctrine\Common\Collections\ArrayCollection();

    }

    /**
     * @return string
     */
    public function getCode()
    {
        return $this->code;
    }

    /**
     * @param string $code
     */
    public function setCode($code)
    {
        $this->code = $code;
    }

    /**
     * @return int
     */
    public function getPositionAffichage()
    {
        return $this->positionAffichage;
    }

    /**
     * @param int $positionAffichage
     */
    public function setPositionAffichage($positionAffichage)
    {
        $this->positionAffichage = $positionAffichage;
    }

    /**
     * Set nom
     *
     * @param string $nom
     *
     * @return Categorie
     */
    public function setNom($nom)
    {
        $this->nom = $nom;

        return $this;
    }

    /**
     * Get nom
     *
     * @return string
     */
    public function getNom()
    {
        return $this->nom;
    }

    /**
     * Get nom complet
     *
     * @return string
     */
    public function getNomComplet()
    {
        if ($this->parent)
        {
            return $this->parent->getNom() . " > " . $this-> nom;
        }
        return $this->nom;
    }

    /**
     * Set parent
     *
     * @param Categorie $parent
     *
     * @return Categorie
     */
    public function setParent($parent)
    {
        $this->parent = $parent;

        return $this;
    }

    /**
     * Get parent
     *
     * @return Categorie
     */
    public function getParent()
    {
        return $this->parent;
    }

    /**
     * @return mixed
     */
    public function getEnfants()
    {
        return $this->enfants;
    }

    /**
     * @param mixed $enfants
     */
    public function setEnfants($enfants)
    {
        $this->enfants = $enfants;
    }

    public function __toString()
    {
        return "".$this->code;
    }

}

Doctrine探查器日志:

17  0.28 ms     

"START TRANSACTION"

Parameters:

[]

View formatted query    View runnable query    Explain query
18  11.37 ms    

DELETE FROM categorie WHERE parent_code = ?

Parameters:

[▼
  "enfants"
]

View formatted query    View runnable query    Explain query
19  115.71 ms   

DELETE FROM categorie WHERE parent_code = ?

Parameters:

[▼
  "services"
]

View formatted query    View runnable query    Explain query
20  0.54 ms     

DELETE FROM categorie WHERE parent_code = ?

Parameters:

[▼
  "jardin"
]

View formatted query    View runnable query    Explain query
21  0.61 ms     

DELETE FROM categorie WHERE parent_code = ?

Parameters:

[▼
  "art"
]

View formatted query    View runnable query    Explain query
22  0.96 ms     

DELETE FROM categorie WHERE parent_code = ?

Parameters:

[▼
  "loisirs"
]

View formatted query    View runnable query    Explain query
23  0.62 ms     

DELETE FROM categorie WHERE parent_code = ?

Parameters:

[▼
  "maison"
]

View formatted query    View runnable query    Explain query
24  0.36 ms     

DELETE FROM categorie WHERE parent_code = ?

Parameters:

[▼
  "vehicules"
]

View formatted query    View runnable query    Explain query
25  0.34 ms     

DELETE FROM categorie WHERE parent_code = ?

Parameters:

[▼
  "immobilier"
]

View formatted query    View runnable query    Explain query
26  0.33 ms     

DELETE FROM categorie WHERE parent_code = ?

Parameters:

[▼
  "emploi"
]

View formatted query    View runnable query    Explain query
27  0.28 ms     

DELETE FROM categorie WHERE parent_code = ?

Parameters:

[▼
  "electronique"
]

View formatted query    View runnable query    Explain query
28  0.27 ms     

DELETE FROM categorie WHERE parent_code = ?

Parameters:

[▼
  "animaux"
]

View formatted query    View runnable query    Explain query
29  0.19 ms     

DELETE FROM categorie WHERE parent_code = ?

Parameters:

[▼
  "divers"
]

View formatted query    View runnable query    Explain query
30  100.67 ms   

INSERT INTO annonce (complex_id, titre, prix, monnaie, monnaie_paiement, type, texte, troc, photos, show_tel, date_creation, date_modif, date_renvoi_mail_confirmation_creation, confirme, validee, refusee, paiement_effectue, pack_urgent, pack_photo, pack_remontee, frequence_remontee, jour_remontee, nb_remontees_restantes, date_alaune, date_derniere_mise_alaune, date_fin_alaune, taille, taille_enfant, marque, modele, date_mise_circulation, energie_vehicule, boite_vitesse, kilometrage, type_bien, surface, nb_pieces, classe_energie, ges, meuble, capacite_personnes, type_contrat, remuneration, experience, temps_plein, handi_acces, duree, categorie_code, user_id, anonymousUser_id) VALUES (?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?)

Parameters:

[▼
  1 => "5b4864d0efb892.92513412"
  2 => "tesq"
  3 => null
  4 => "euro"
  5 => "euro"
  6 => "offre"
  7 => "desc"
  8 => 0
  9 => null
  10 => 0
  11 => "2018-07-13 10:37:36"
  12 => "2018-07-13 10:37:36"
  13 => null
  14 => 0
  15 => 0
  16 => 0
  17 => 0
  18 => 0
  19 => 0
  20 => 0
  21 => null
  22 => null
  23 => null
  24 => null
  25 => null
  26 => null
  27 => null
  28 => null
  29 => null
  30 => null
  31 => null
  32 => null
  33 => null
  34 => null
  35 => null
  36 => null
  37 => null
  38 => null
  39 => null
  40 => null
  41 => null
  42 => null
  43 => null
  44 => null
  45 => 0
  46 => 0
  47 => null
  48 => "enfants_livres"
  49 => 11
  50 => null
]

View formatted query    View runnable query    Explain query
31  43.06 ms    

"ROLLBACK"

Parameters:

[]

View formatted query    View runnable query    Explain query

任何人都有线索让我理解为什么删除这些Categorie实体吗?

谢谢!

0 个答案:

没有答案