dtkjthe4025 2018-07-13 08:56 采纳率: 0%
浏览 30

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

I have a problem creating an entity Annonce. In an Annonce, I have a Categorie.

The creation of an Annonce used to work, but now, it does not work anymore (I don't know why).

When I submit the creation form, all the categories are deleted (I see it in the doctrine profiler) and then it tries to save the annonce but the category I have selected in the form does not exists anymore as it has been deleted just before.

I don't know why there is those deletions. Here is my code :

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

    ));

}

Categorie is defined in the Annonce entity like that :

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

The Categorie entity code:

<?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;
    }

}

And the Doctrine profiler logs :

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

Anyone has a clue to give me to understand why these Categorie entities are deleted ?

Thanks !

  • 写回答

0条回答 默认 最新

    报告相同问题?

    悬赏问题

    • ¥15 关于无人驾驶的航向角
    • ¥15 keil的map文件中Image component sizes各项意思
    • ¥30 BC260Y用MQTT向阿里云发布主题消息一直错误
    • ¥20 求个正点原子stm32f407开发版的贪吃蛇游戏
    • ¥15 划分vlan后,链路不通了?
    • ¥20 求各位懂行的人,注册表能不能看到usb使用得具体信息,干了什么,传输了什么数据
    • ¥15 Vue3 大型图片数据拖动排序
    • ¥15 Centos / PETGEM
    • ¥15 划分vlan后不通了
    • ¥20 用雷电模拟器安装百达屋apk一直闪退