$object->save() : changement de comportement add/update
Bonjour,
J'ai un formulaire dont je surcharge la méthode save() pour effectuer un traitement des données : ou bien un objet similaire existe déjà dans la table (comparaison sur quelques champs) et alors on met à jour l'entrée existante, ou bien cette recherche ne retourne aucun objet similaire et on l'ajoute à la base.
Je pourrais donc me contenter d'un (en pseudo-code) :
Code:
1 2 3 4
| if($exist = $this->searchObject($object))
return $this->updateExistingObject($exist); // renvoie sur un Doctrine_Query
else
return parent::save($conn); |
Mais je n'aime pas cette étape qui zappe parent::save()... Du coup, je me demandais si en éditant les propriétés de l'objet lui même, on pouvait changer la requète d'ajout en requête d'update. J'ai essayé de simplement faire correspondre l'id de l'objet à celui en base, bien heureusement Symfony me signale un doublon. J'ai aussi naïvement essayé de réassigner l'objet de la base à $this... vous vous doutez du résultat.
Bref je voulais savoir si vous connaissiez une manière propre de le faire (peut-être en dehors de save() du coup) ou si mon update séparé du départ reste la meilleure solution même si elle ne passe plus par parent::save().