Après avoir appris comment créer, mettre à jour et supprimer des données, voici une nouvelle entrée dans la série ORDA. Dans ce post, vous allez voir comment interroger votre datastore en mode orienté objet. Avec ORDA, les requêtes sont plus légères, plus lisibles, et vous pouvez naviguer dans l’ensemble du modèle de données en utilisant des concepts orientés objet !
De plus, ORDA permet d’ interroger très facilement plusieurs tables liées, de gérer des relations récursives sur une même table et d’utiliser plusieurs opérateurs logiques dans une seule requête. De plus, vous n’avez pas à vous soucier de la mise en place des relations entre les tables … manuellement ou automatiquement !
Exemple de requête avec DataStore
COMMENCEZ À UTILISER LES REQUÊTES ORDA
Comme lorsque vous exécutez une requête sur une table, la requête avec ORDA est faite sur une classe de données ( qui correspond à une table).
Il existe plusieurs façons d’interroger une classe de données. Ce qui suit en donne un aperçu rapide. Pour des informations plus approfondies sur la méthode query(), consultez la documentation.
1- Fournir la requête sous la forme d’une seule chaîne
Voici une requête pour obtenir tous les employés dont le prénom commence par ‘S’ :
C_OBJECT($employees)
)
$employees :=ds.Employee.query("firstName='S@'" // Query on Employee table
2- Fournir la requête et les valeurs séparément en utilisant des caractères de remplacement
Supposons maintenant que vous vouliez obtenir tous les employés dont le prénom commence par ‘D’ ou ‘E’. Veuillez noter que les valeurs à appliquer sont décalées dans la requête et qu’elles sont désignées par :1, :2, … :n, comme indiqué ci-dessous :
C_OBJECT($employees)
)
$employees :=ds.Employee.query("firstName=:1 or firstName=:2" ; "D@" ; "E@" // Query on Employee table
Variante: Vous pouvez également utiliser des caractères de remplacement à travers une collection pour fournir les valeurs. Comme le montre l’exemple ci-dessous :
C_OBJECT($employees;$params)
// You can use a collection to provide values to apply in the query
$params:=New object
$params .
parameters:=New collection("D@" ; "E@")
$employees :=ds.Employee.query("firstName=:1 or firstName=:2";$params) // Query on Employee table
quelques avantages de cette nouvelle façon de faire des requêtes
UTILISER FACILEMENT UN LIEN RÉCURSIF SUR UNE SEULE TABLE
Considérons ce lien récursif sur la table « Employee » :
En utilisant la méthode classique
Ce code demande tous les employés dont le prénom commence par la lettre ‘A’, avec un manager dont le nom de famille commence par la lettre ‘S’ :
ARRAY LONGINT(_managersIDs;0)
QUERY ([Employee] ;[Employee]firstName ;"=" ; "A@")
CREATE SET ([Employee] ; "a")
QUERY ([Employee] ;[Employee]lastName ;"=" ;"S@")
SELECTION TO ARRAY ([Employee]ID;_managersIDs)
QUERY WITH ARRAY ([Employee]managerID;_managersIDs)
CREATE SET ([Employee] ; "s")
INTERSECTION ("a" ; "s" ; "result")
USE SET ("result")
CLEAR SET ("a")
CLEAR SET ("s")
en utilisant orda
Cette requête est beaucoup plus légère…
C_OBJECT($entitySelection)
$entitySelection := ds.Employee.query("firstName=:1 and manager.lastName=:2" ; "A@" ; "S@")
N’attendez pas … commencez à utiliser ORDA dès maintenant pour obtenir un code plus court, plus propre et plus lisible!