13.13.12 SearchDoc::join()
Cette méthode permet de faire une [jointure][jointure].
13.13.12.1 Description
void join( string $join )
Cette méthode permet d'ajouter via le mécanisme de jointure des critères provenant d'une autre table de manière à établir des filtres complexes.
13.13.12.1.1 Avertissements
Les restrictions suivantes s'appliquent :
- une seule jointure est possible par SearchDoc,
- on ne peut utiliser la jointure que pour établir une recherche plus précise mais pas pour enrichir les résultats,
- on ne peut pas faire de jointure sur la table en cours.
13.13.12.2 Liste des paramètres
- (string)
join
- La chaîne attendue doit être au format suivant :
Ce qui donne en BNF :
join ::= attributeName ( ('::'type)| ) (' ')+ operator (' ')+ familyName'('attributeName')' operator ::= '<' | '>' | '=' | '<=' | '>=' type ::= 'type postgresql'
Note : La syntaxe de la chaîne attendue dans join n'est pas du SQL.
Note : Le type postgreSql de l'attribut doit être modifié pour
être compatible avec le type de l'attribut retourné par la jointure, la fonction
::
permet de modifier le type d'une valeur postgreSql.
13.13.12.3 Valeur de retour
void
13.13.12.4 Erreurs / Exceptions
3.2.12
Exception \Dcp\SearchDoc\Exception
si la jointure est syntaxiquement
incorrecte.
13.13.12.5 Historique
13.13.12.5.1 Release 3.2.12
3.2.12
La méthode retourne une exception en cas d'erreur de syntaxe. Auparavant
l'erreur était remontée au niveau de la méthode SearchDoc::search()
.
13.13.12.6 Exemples
Recherche de tous les animaux dont le gardien a comme prénom "tom" :
function tomAnimals(Action & $action) { header('Content-Type: text/plain'); $searchDoc = new searchDoc("", "ZOO_ANIMAL"); $searchDoc->join("an_gardien::int = zoo_gardien(id)"); $searchDoc->addFilter("zoo_gardien.firstname = 'tom'"); $searchDoc->search(); $err = $searchDoc->getError(); if ($err !== "") { throw new Exception("Error Processing Search ".$err, 1); } var_export($searchDoc->getSearchInfo()); }
13.13.12.7 Notes
Aucune.
13.13.12.8 Voir aussi
Voir la documentation avancée.