Je suis entrain de me faire la main sur symfony 4 et j'aurais besoin d'un conseil.
J'ai créé une entité dont certains valeurs peuvent être à null en bdd et tout fonctionne pour le mieux... merci make:crud...
J'aurais besoin de savoir, avant de persister mon entité en bdd si les champs null ont été rempli... pareil pour l'édition, j'aimerais savoir quels champs ont été modifiés ou pas avant l'update.... Doctrine le gère de manière transparente mais ça ne me convient pas. Exemple tout béte, j'aimerais pouvoir mettre à jour mon modifiedAt quand j’édite mon entité... actuellement, si je fais editer puis sauvegarder... doctrine mets à jour modifiedAt alors qu'aucune modification n'a été effectuée... (malgré un preUpdate)
Je ne sais pas de quelle manière je dois m'y prendre... Dois je passer par un listener /suscriber ? via orm (prepersist), j'avoue que c'est encore flou pour moi. Si quelqu'un pouvait éclairer ma lanterne je suis preneur...
Le truc c'est que si je fais un update sur un formulaire sans rien modifier quand je vais cliquer sur save il va mettre à jour ma valeur modiefiedAt alors qu'il n'y aura aucune modif de faite sur l'entité.
Apres 48h de recherches j'ai fini par obtenir le résultat attendu en ajoutant ce code à mon entity :
/**
* @ORM\PreUpdate
*/
public function preUpdate(PreUpdateEventArgs $event)
{
if ($event->hasChangedField('serie')){
$this->setModifiedAt(new \DateTime());
}
}
Personnellement je pense que le champ modifiedAt ne devrai pas être dans le form, il devrai juste apparaître de manière indicative. Ensuite dans ta base tu peux faire un trigger sur l'update pour modifier la valeur directement.
- Edité par coolswing 19 septembre 2019 à 14:48:32
Personnellement je pense que le champ modifiedAt ne devrai pas être dans le form, il devrai juste apparaître de manière indicative. Ensuite dans ta base tu peux faire un trigger sur l'update pour modifier la valeur directement.
- Edité par coolswing il y a environ 1 heure
Bonjour, ce champ là n’apparaît pas dans le formulaire. Je l'ai masqué au niveau de l'affichage.
Personnellement je pense que le champ modifiedAt ne devrai pas être dans le form, il devrai juste apparaître de manière indicative. Ensuite dans ta base tu peux faire un trigger sur l'update pour modifier la valeur directement.
- Edité par coolswing il y a environ 1 heure
Bonjour, ce champ là n’apparaît pas dans le formulaire. Je l'ai masqué au niveau de l'affichage.
donc il est affichable et modifiable par n'importe qui faisant un peux de html
Personnellement je pense que le champ modifiedAt ne devrai pas être dans le form, il devrai juste apparaître de manière indicative. Ensuite dans ta base tu peux faire un trigger sur l'update pour modifier la valeur directement.
- Edité par coolswing il y a environ 1 heure
Bonjour, ce champ là n’apparaît pas dans le formulaire. Je l'ai masqué au niveau de l'affichage.
donc il est affichable et modifiable par n'importe qui faisant un peux de html
entièrement d'accord et pourquoi pas le supprimer directement du form dans ce cas, vu qu'il ne sert à rien?
- Edité par AaFredericHusson 19 septembre 2019 à 17:32:11
Pas d'aide concernant le code par MP ni par mail, le forum est là pour ça
En rédigeant ma réponse précedante, j'ai réalisé que oui, le mieux était de le virer carrément du formulaire...
Pour revenir au sujet initial, je vais opter pour un listener au lieu de mettre le code dans mon entity... ça me semble plus cohérent niveau organisation, d'autant qu'il va y avoir pas mal de traitement à faire...
Reste à créer mon premier listener :-)
Savoir si entité modifiée ou pas
× Après avoir cliqué sur "Répondre" vous serez invité à vous connecter pour que votre message soit publié.
× Attention, ce sujet est très ancien. Le déterrer n'est pas forcément approprié. Nous te conseillons de créer un nouveau sujet pour poser ta question.
Pas d'aide concernant le code par MP ni par mail, le forum est là pour ça
Pas d'aide concernant le code par MP ni par mail, le forum est là pour ça
Pas d'aide concernant le code par MP ni par mail, le forum est là pour ça