Bonjour,
je voudrais redéfinir mon model pour que lorsque il sauvegarde mes données il utilise une fonction qui calcul un id
Version imprimable
Bonjour,
je voudrais redéfinir mon model pour que lorsque il sauvegarde mes données il utilise une fonction qui calcul un id
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.
Effectivement j'utilise doctrine mon schema est bon
je doit calculé ce champ moi meme avec une requête :Code:
1
2
3
4
5
6
7 num: type: integer(4) fixed: false unsigned: true primary: true autoincrement: false
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é
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.
Merci pour ta réponse y aurait pas un lien détaillant un peux tout cela ? :p
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.