Rechercher

Tip #1 ORDA : Get related entity selection ini a N-N relation.

Pour mon premier Tip je vais parler d’ORDA et plus précisément comment accéder à une sélection d’entités lorsque l’on est dans une relation de type N-N.

Imaginons la structure suivant :

Ici nous voulons donc accéder à tous les acteurs d’un film spécifique. Comment faire?

Essayons de regarder la différence entre le langage 4D classique et ORDA.

4D Classique : ALL RECORDS([Movie]) // FIRST RECORD([Movie]) // Implicite, ALL RECORDS charge automatiquement le premier record QUERY([Actor];[ActorMovie]UUID_Movie=[Movie]UUID)

ORDA : $actors:=ds.Movie.all().first().actorMovieSelection.actor // en une ligne

Si on décompose en 2 lignes : // $movie est une entity de type Movie $movie:=ds.Movie.all().first() // actorMovieCollection est une entitySelection de type ActorMovie // La magie arrive dans le fait que actorMovieSelection.actor va retourner dans $actors, une entitySelection de type Actor $actors:=$movie.actorMovieSelection.actor

L’astuce ici est que l’on utilise l’attribut « actor » qui est un attribut de type entity sur l’entitySelection « actorMovieSelection », ORDA sait que dans ce cas, il doit retourner l’entitySelection de type Actor.

Si on va plus loin, on peut aussi écrire :

$actors_firstNames:=$movie.actorMovieSelection.actor.firstName

Cela va retourner une collection de tous les firstName de tous les acteurs.

Ce phénomène est expliqué dans la doc ici : entitySelection.{attributeName}

Dans le prochain tips nous verrons l’intérêt d’un bon nommage pour coder efficacement. (Tip #2 Relations : Bien nommer ces tables.)

80 vues

Posts récents

Voir tout

Me contacter

  • Twitter
  • YouTube

Biel/Bienne - Bern - Switzerland