Précédent   Forum des professionnels en informatique > PHP > Bibliothèques et frameworks > symfony
symfony Forum d'entraide sur le framework PHP symfony. Avant de poster : cours symfony et FAQ symfony
Partagez cette discussion sur d'autres réseaux sociaux : Viadeo Twitter Google Facebook Digg Delicious MySpace Yahoo
Réponse Proposer ce sujet en actualité
 
Outils de la discussion
Publicité
'
Vieux 14/01/2011, 10h06   #1
Invité régulier
 
Inscription : décembre 2010
Messages : 24
Détails du profil
Informations forums :
Inscription : décembre 2010
Messages : 24
Points : 7
Points : 7
Par défaut champ id calculé non auto_increment

Bonjour,

je voudrais redéfinir mon model pour que lorsque il sauvegarde mes données il utilise une fonction qui calcul un id
Tiph13 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 14/01/2011, 13h17   #2
Membre confirmé
 
Avatar de Vivian Pennel
 
Vivian Pennel
Developpeur Symfony | JSF/Seam
Inscription : août 2004
Messages : 173
Détails du profil
Informations personnelles :
Nom : Vivian Pennel
Âge : 23
Localisation : France, Hérault (Languedoc Roussillon)

Informations professionnelles :
Activité : Developpeur Symfony | JSF/Seam
Secteur : High Tech - Produits et services télécom et Internet

Informations forums :
Inscription : août 2004
Messages : 173
Points : 246
Points : 246
En supposant que tu utilises doctrine, un exemple de champ id en clef primaire :
A mettre dans la section "columns" de ta table

Code :
1
2
3
 
// config/doctrine/schema.yml
id:  {type: integer(4), primary: true, autoincrement: true, notnull: true }

PS : si tu ne définis pas de clef primaire sur une table, par défaut doctrine va créer un champ id autoincrement.
__________________
Mon blog : http://blog.developpez.com/vivian-pennel/
Vivian Pennel est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 14/01/2011, 13h24   #3
Invité régulier
 
Inscription : décembre 2010
Messages : 24
Détails du profil
Informations forums :
Inscription : décembre 2010
Messages : 24
Points : 7
Points : 7
Effectivement j'utilise doctrine mon schema est bon

Code :
1
2
3
4
5
6
7
 
    num:
      type: integer(4)
      fixed: false
      unsigned: true
      primary: true
      autoincrement: false
je doit calculé ce champ moi meme avec une requête :
je sélectionne le dernier id je lui ajoute +1 (pour simplifié)
la requête je l'ai mais je sais pas comment l’implémenté pour que a chaque sauvegarde en base ca soit exécuté
Tiph13 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 14/01/2011, 18h20   #4
Modérateur
 
Avatar de Michel Rotta
 
Homme Michel Rotta
Responsable d'exploitation informatique
Inscription : septembre 2005
Messages : 4 913
Détails du profil
Informations personnelles :
Nom : Homme Michel Rotta
Âge : 49
Localisation : France, Bouches du Rhône (Provence Alpes Côte d'Azur)

Informations professionnelles :
Activité : Responsable d'exploitation informatique
Secteur : Distribution

Informations forums :
Inscription : septembre 2005
Messages : 4 913
Points : 7 505
Points : 7 505
Il faut travailler dans le modèle.

Tu dois créer une méthode getId qui te retourne ton id (return parent::__get('Id')

Une méthode setId qui génère une erreur.

Une méthode preSave qui va vérifier que l'enregistrement est en création (isNew) et calcul le numéro d'Id. Il l'implante ensuite (parent::__set('Id', $valeurDeId) )

Suivant le cas, tu peux aussi envisager de faire un triger sur ta base, mais c'est une autre histoire.
__________________
Si tu donnes un poisson à un homme, il mangera un jour. Si tu lui apprends à pêcher, il mangera toujours (Lao Tseu).
  • Pensez à valoriser les réponses pertinantes, cliquez sur le bouton vert +1 pour indiquer votre accord avec la solution proposée.
  • Pensez à utiliser la balise [code] pour afficher du code, elle est cachée sous le bouton [#] dans l'éditeur.
  • Une discussion est terminée ? Alors le bouton est votre ami !
Michel Rotta est déconnecté   Envoyer un message privé Réponse avec citation 10
Vieux 14/01/2011, 21h17   #5
Invité régulier
 
Inscription : décembre 2010
Messages : 24
Détails du profil
Informations forums :
Inscription : décembre 2010
Messages : 24
Points : 7
Points : 7
Merci pour ta réponse y aurait pas un lien détaillant un peux tout cela ? :p
Tiph13 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 14/01/2011, 22h43   #6
Modérateur
 
Avatar de Michel Rotta
 
Homme Michel Rotta
Responsable d'exploitation informatique
Inscription : septembre 2005
Messages : 4 913
Détails du profil
Informations personnelles :
Nom : Homme Michel Rotta
Âge : 49
Localisation : France, Bouches du Rhône (Provence Alpes Côte d'Azur)

Informations professionnelles :
Activité : Responsable d'exploitation informatique
Secteur : Distribution

Informations forums :
Inscription : septembre 2005
Messages : 4 913
Points : 7 505
Points : 7 505
A ma connaissance non.

Expérience acquise en développant un module un brin tordu...

Je t'ai mis les méthodes qui devraient te servir.

Note, en cherchant, tu vas trouver des informations sur la surcharge de la méthode save. Je me demande si on n'en parle pas dans Jobeet. Je n'ai pas de raccourcis sous la main pour cela.
__________________
Si tu donnes un poisson à un homme, il mangera un jour. Si tu lui apprends à pêcher, il mangera toujours (Lao Tseu).
  • Pensez à valoriser les réponses pertinantes, cliquez sur le bouton vert +1 pour indiquer votre accord avec la solution proposée.
  • Pensez à utiliser la balise [code] pour afficher du code, elle est cachée sous le bouton [#] dans l'éditeur.
  • Une discussion est terminée ? Alors le bouton est votre ami !
Michel Rotta est déconnecté   Envoyer un message privé Réponse avec citation 00
Réponse Proposer ce sujet en actualité Cette discussion est résolue.
Outils de la discussion



Fuseau horaire GMT +2. Il est actuellement 00h34.


 
 
 
 
Partenaires

Hébergement Web