IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Symfony PHP Discussion :

id = null lors de l'appel du constructeur [2.x]


Sujet :

Symfony PHP

  1. #1
    Nouveau membre du Club
    Profil pro
    Inscrit en
    Octobre 2010
    Messages
    45
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Octobre 2010
    Messages : 45
    Points : 33
    Points
    33
    Par défaut id = null lors de l'appel du constructeur
    Bonjour à tous,

    Alors j'ai un petit soucis qui me bloque depuis hier, j'ai une classe PartieAccueil :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
     
     
     * @ORM\InheritanceType("SINGLE_TABLE")
     * @ORM\DiscriminatorColumn(name="type_bandeau", type="string")
     * @ORM\DiscriminatorMap({"informations" = "Informations","listeServiceClient" = "ListeServiceClient", "listeElement" = "ListeElement", "bandeauConfig" = "BandeauConfig"})
     */
    class PartieAccueil
    {
        /**
         * @ORM\GeneratedValue(strategy="IDENTITY")
         * @ORM\Id
         * @ORM\Column(type="integer")
         */
        protected $id;
                                          ...
    et une classe ListeServiceClient qui en hérite :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
     
     */
    class ListeServiceClient extends  PartieAccueil 
    {
        /**
         * @var integer $id
         */
        protected $id;
    	         ...
    et lorsque j'appelle le constructeur dans un contrôleur et que je fais un var_dump, je me rends compte que l'id est égal à NULL

    :protected 'id' => null

    Ce qui me pose un problème puisque ListeServiceClient comme son nom l'indique contient une collection de ServiceClient, et donc lorsque j'essaye de faire serviceClient->setListeServiceClient($listeServiceClient);
    Et bah forcément il est pas content puisque $listeServiceClient n'a pas d'id ...

    Ce qui est bizarre c'est que j'ai une ListeElement qui hérite de partieAccueil et qui est sensiblement identique et là pas de soucis ...

    J'utilise Wamp et lorsque je vais voir mes tables avec phpMyAdmin, il y a un truc bizarre :

    J'ai une table listeServiceClient et une table partieAccueil, mais lorsque je persiste une listeServiceClient, je la voie dans partieAccueil (comme listeElement sauf qu'il n'existe pas de table listeElement dans phpMyAdmin...)

    Voilà donc mon problème, je dois vous avouer que je sèche un peu sur ce coup là et qu'un peu d'aide serait la bienvenue.

    En remerciant d'avance celles et ceux qui prendront la peine de me lire

  2. #2
    Membre habitué Avatar de Avrel
    Homme Profil pro
    Développeur Web
    Inscrit en
    Avril 2010
    Messages
    118
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Alpes Maritimes (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Développeur Web
    Secteur : Communication - Médias

    Informations forums :
    Inscription : Avril 2010
    Messages : 118
    Points : 177
    Points
    177
    Par défaut
    Il faut que tu persiste ton entité avant de pouvoir acceder a l'id

  3. #3
    Nouveau membre du Club
    Profil pro
    Inscrit en
    Octobre 2010
    Messages
    45
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Octobre 2010
    Messages : 45
    Points : 33
    Points
    33
    Par défaut
    d'accord, je pensais que c'était un problème d'id, mais du coup mon problème n'est pas résolu.

    Dans mon handler, j'ai le code suivant :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
     
    public function onSuccess(ListeServiceClient $listeServiceClient)
        {
    		$numLigne = 1;
    		$position = 1;
    		foreach($listeServiceClient->getServiceClient() as $serviceClient){
     
    			$serviceClient->setNumLigne($numLigne);
    			$serviceClient->setPosition($position);
    			$serviceClient->setListeServiceClient($listeServiceClient);
     
    			$position++;
    			if($position>=5)
    			{
    				$position = 0;
    				$numLigne++;
    			}
     
    			$this->em->persist($serviceClient);
    		}
            $this->em->persist($listeServiceClient);
            $this->em->flush();
        }
    et la ligne qui pose problème est la suivante :

    $serviceClient->setListeServiceClient($listeServiceClient);

    Ça m'affiche l'erreur suivante :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    SQLSTATE[23000]: Integrity constraint violation: 1452 Cannot add or update a child row: a foreign key constraint fails (`symfony`.`serviceclient`, CONSTRAINT `FK_50DC4BEDEBA5A722` FOREIGN KEY (`listeServiceClient_id`) REFERENCES `listeserviceclient` (`id`))

  4. #4
    Membre habitué
    Profil pro
    Développeur Web
    Inscrit en
    Avril 2010
    Messages
    141
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations professionnelles :
    Activité : Développeur Web

    Informations forums :
    Inscription : Avril 2010
    Messages : 141
    Points : 157
    Points
    157
    Par défaut
    Il s'agit toujours du même problème en fait. Ton listeServiceClient contient un id de Client si j'ai bien saisi. Or il n'est toujours pas présent puisque non flushé. Tu dois donc définir un Cascade Persist sur ListeServiceClient ou bien flushé une première fois le Client seul.

  5. #5
    Nouveau membre du Club
    Profil pro
    Inscrit en
    Octobre 2010
    Messages
    45
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Octobre 2010
    Messages : 45
    Points : 33
    Points
    33
    Par défaut
    Pour finir mon problème s'est réglé presque tout seul, je devais une autre entité assez similaire contenant elle aussi une collection d'une autre entité, je réutilise le même code et là ça fonctionne sans soucis, du coup j'ai supprimé mon code et je l'ai ré écrit et ça fonctionne, c'est assez bizarre mais ça fonctionne donc je ne m'en plains pas ^^.

    Merci à Avrel et Krzdata d'avoir pris le temps de se pencher sur mon problème

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. Enum WSDL null lors de l'appel d'un web service
    Par Babas007 dans le forum Services Web
    Réponses: 0
    Dernier message: 14/04/2011, 10h55
  2. [Windev 9] Erreur lors de l'appel à un constructeur
    Par le y@m's dans le forum WinDev
    Réponses: 2
    Dernier message: 23/08/2007, 17h02
  3. Flash lors de l'appel d'un état Crystal report 7
    Par IADJOFOGUE dans le forum SAP Crystal Reports
    Réponses: 1
    Dernier message: 12/05/2005, 11h10
  4. [héritage privé] appel du constructeur de base
    Par PINGOUIN_GEANT dans le forum C++
    Réponses: 4
    Dernier message: 19/10/2004, 14h05
  5. Erreur lors de l'appel d'un page ASP
    Par poirier dans le forum ASP
    Réponses: 2
    Dernier message: 27/08/2004, 15h17

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo