OrphanRemoval et Persistance transitive avec Doctrine2

On va voir dans cet article comment supprimer automatiquement des objets qui ne sont plus référencés par leur objet parent.

Prenons l’exemple d’un objet Day qui comporte un ou plusieurs objet Event. Imaginons que nous ayons un formulaire nous permettant d’ajouter et supprimer des objets Events (dans notre formulaire un champ de type Collection) via du javascript. Si on supprime un des éléments de la collection des Event, et qu’on soumet le formulaire, Doctrine2 ne va pas supprimer l’objet tout seul alors que c’est le but souhaité.

Voyons d’abord le principe et comment résoudre ce problème:

Lorsqu’on souhaite qu’une opération soit cascadée le long d’une association, on va indiquer dans le mapping par exemple:
cascade={"persist"}

Géolocalisation ou comment créer ses propres fonctions DQL avec Doctrine2

Pour calculer les distances entre deux points géographiques il faut se baser sur leurs latitudes et longitudes. Lorsque l’on souhaite appliquer ce calcul en SQL on se retrouve avec une requête extrêmement verbeuse. Heureusement si vous utilisez Doctrine2 vous allez pouvoir créer votre propre fonction DQL qui vous permettra de faire ce calcul très simplement.