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

Doctrine2 PHP Discussion :

insert sur clef etrangere avec sf2.1


Sujet :

Doctrine2 PHP

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre averti
    Homme Profil pro
    Développeur multimédia
    Inscrit en
    Juillet 2011
    Messages
    39
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Développeur multimédia
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Juillet 2011
    Messages : 39
    Par défaut insert sur clef etrangere avec sf2.1
    Depuis symfony2.1, je ne peut plus enregistrer de clef étrangère.
    Mon appli fonctionner très bien en sf2.0.
    Que faut-il faire pour enregistrer une clef étrangère dans doctrine2 ?

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
     
                   //mes données 24 / 59 / 50
                   echo '<br>B-' . $product_type_id . ' / ' . $user_categorie->getId() . ' / ' . $value_defaut;
     
                    $pourcentage_reduc = new PourcentageReduc();
                    $pourcentage_reduc->setProductTypeId($product_type_id);
                    $pourcentage_reduc->setUserCategoryId($user_categorie->getId());
                    $pourcentage_reduc->setPourcentage($value_defaut);
                    $this->_em->persist($pourcentage_reduc);
                    $this->_em->flush();
    resultat:
    An exception occurred while executing 'INSERT INTO pourcentage_reduc (product_type_id, user_category_id, pourcentage) VALUES (?, ?, ?)' with params {"1":null,"2":null,"3":"50"}:

    les valeurs des clef étrangère sont null !!! pourquoi doctrine2 efface les clef avant l'enregistrement?

  2. #2
    Membre éprouvé
    Homme Profil pro
    Chef d'entreprise
    Inscrit en
    Mai 2011
    Messages
    122
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Chef d'entreprise
    Secteur : Arts - Culture

    Informations forums :
    Inscription : Mai 2011
    Messages : 122
    Par défaut
    Bonjour,

    Cela change quelque chose si tu modifies
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    $pourcentage_reduc->setUserCategoryId($user_categorie->getId());
    par
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    $pourcentage_reduc->setUserCategoryId($user_categorie);
    ?

  3. #3
    Membre averti
    Homme Profil pro
    Développeur multimédia
    Inscrit en
    Juillet 2011
    Messages
    39
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Développeur multimédia
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Juillet 2011
    Messages : 39
    Par défaut
    alors effectivement, selon la doc officielle, cette exemple fonctionne:
    $pourcentage_reduc->setUserCategory($user_categorie);

    $user_categorie est donc forcement une instance de la class UserCategorie();

    donc on ne peut plus enregistrer directement l'id dans un set, s'est forcement par un objet.

    sauf que j'ai un csv de 45000 entrées et je dois stocké les clef primaire pour éviter de refaire des requêtes et ainsi alléger le traitement.

    Comment fait-on pour enregistrer une clef étrangère avec un numeric avec doctrine 2.1 et pas un object ?
    ex: $pourcentage_reduc->setUserCategoryId($user_categorie_id);

  4. #4
    Membre émérite
    Homme Profil pro
    Inscrit en
    Juin 2011
    Messages
    725
    Détails du profil
    Informations personnelles :
    Sexe : Homme

    Informations forums :
    Inscription : Juin 2011
    Messages : 725
    Par défaut
    Tu peux récupérer une instance d'une entité existante dans la base sans pour autant executer de requete SQL.

    $productType=$this->_em->getReference('My/Entity/ProductType',$idUser);
    $pourcentage_reduc->setProductType($productType);
    ....

  5. #5
    Membre averti
    Homme Profil pro
    Développeur multimédia
    Inscrit en
    Juillet 2011
    Messages
    39
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Développeur multimédia
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Juillet 2011
    Messages : 39
    Par défaut
    Effectivement, on a plus le choix il faut utiliser la fonction getReference('xxx',$id)

    Merci

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

Discussions similaires

  1. insertion avec contrainte sur clef primaire ?
    Par panthere noire dans le forum PostgreSQL
    Réponses: 2
    Dernier message: 20/02/2012, 14h52
  2. [MySQL] Formulaire multiples et INSERT sur plusieures tables avec même ID
    Par mfredok dans le forum PHP & Base de données
    Réponses: 13
    Dernier message: 25/11/2010, 13h59
  3. Insert sur MySQL database avec null et bit
    Par jean christophe dans le forum Débuter
    Réponses: 1
    Dernier message: 27/05/2010, 17h56
  4. [EF]Mappage sur 2 table avec clef etrangere
    Par anthyme dans le forum Accès aux données
    Réponses: 4
    Dernier message: 29/01/2009, 16h53
  5. Insertion d'1 petit texte ciblé sur page .php avec echo
    Par sabine2000 dans le forum Langage
    Réponses: 1
    Dernier message: 21/10/2005, 11h31

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