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 :

join:attributeName::typeoperatorfamilyName(attributeName)

operator:<>=<=>=

type:type postgresql

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.

×
mis à jour