Symfony2, Doctrine, mise à jour de la db entrée sans queryBuilder
Pour enregistrer une entrée dans la base de données on peut utiliser:
$em->persist($entity);
$em->flush();
Mais comment pouvons-nous mettre à jour une entrée existante sans l'aide de $this->getEntityManager()->createQuery()
?
Pouvons-nous?
Je suis à la recherche à un certain genre de $em->update()
existants à l'entrée en db.
OriginalL'auteur user1954544 | 2013-01-30
Vous devez vous connecter pour publier un commentaire.
Façon Simple de le faire, Fusselchen dit à droite, juste de montrer un exemple
OriginalL'auteur
Non, il n'existe pas une fonction comme
$em->update()
.Vous devez chercher un objet de DB et le mettre à jour ou, tout simplement, écrire une requête personnalisée (avec DQL) que la mise à jour de ce que vous avez besoin
Comme vous pouvez le voir ici
Ceci est un exemple de requête DQL pour la mise à jour d'une entité du nom de l'Utilisateur
Dernier mais non le moins important, cette requête doit être placé dans une "classe" appelé référentiel qui contient toutes les commandes sql (dql).
C'est une bonne pratique.
En savoir plus sur les référentiels, ici
il n'est pas le premier. J'ai répondu à 29 minutes en arrière, et il a 18 minutes à peine, alors que le mien était la première. Mais passons...
ps.: meilleures réponses ont accepté, de ne pas "plus rapide"
"Non, il n'existe pas une fonction comme $em->update()." C'est faux, l'opération de fusion en dql est conçu exactement pour la mise à jour des modèles qui sont détachés par le gestionnaire de maintenant. Essentiellement, il fera l'sélectionnez pour vous afin de fusion est le plus proche équivalent pour la mise à jour.
Je suppose que vous n'avez rien compris ni la question ni la réponse.
OriginalL'auteur
pas d'appel supplémentaire pour la mise à jour de la base de données. L'EntityManager maintient votre modèle d'une Base de données de synchronisation sur la méthode flush()
voir http://symfony.com/doc/current/book/doctrine.html#updating-an-object
OriginalL'auteur