13.13.15 SearchDoc::search()
13.13.15.1 Description
array|null|SearchDoc search ( )
Cette méthode exécute la recherche. Elle construit la requête SQL
nécessaire
en utilisant les paramètres de la famille recherchée et les conditions insérées
par les différentes méthodes.
13.13.15.1.1 Avertissements
Par défaut certains types de documents sont exclus des résultats de la
recherche. Ces exclusions sont modifiables par les méthodes
::excludeConfidential()
,
::overrideViewControl()
et les attributs
trash
et distinct
.
13.13.15.2 Liste des paramètres
Aucun.
13.13.15.3 Valeur de retour
La valeur du retour dépend du type de recherche :
- Résultats bruts : le retour est alors un tableau
array
, si la préparation de la recherche à échoué alors le résultat est un tableau vide, - Résultats documents : le retour est alors l'objet
searchDoc
lui-même ounull
si la préparation de la recherche a échoué.
Note : Le changement du type de recherche se fait uniquement avant que la
recherche ne soit déclenchée avec la méthode
SearchDoc::setObjectReturn()
.
13.13.15.4 Erreurs / Exceptions
Si la préparation de la recherche a échoué alors si la recherche :
- retourne des résultats brut : le retour est un array vide,
- retourne des documents : le retour est
null
.
Exceptions :
-
\Dcp\Db\Exception
si la requête n'a pas pu être exécutée. -
\Dcp\SearchDoc\Exception("SD0008")
si la méthodeSearchDoc::addFilter
est utilisée conjointement avec une recherche spécialisée en tant que [collection de base][core-ref:SearchDoc::useCollection].
13.13.15.5 Historique
Aucun.
13.13.15.6 Exemples
13.13.15.6.1 Recherche simple
Recherche de tous les dossiers que l'utilisateur courant peut voir.
$searchDoc=new SearchDoc("","DIR"); $searchDoc->setObjectReturn(true); $documentList=$searchDoc->search()->getDocumentList(); foreach ($documentList as $docid=>$doc) { printf("%d) %s (%s)", $docid, $doc->getTitle(), $doc->getRawValue(\Dcp\AttributeIdentifiers\Dir::ba_title)); }
13.13.15.6.2 Recherche avec capture d'erreurs
Reprise de l'exemple précédent en ajoutant les tests d'erreurs.
try { $searchDoc=new SearchDoc("","DIR"); $searchDoc->setObjectReturn(true); $searchDoc->search(); if ($err=$searchDoc->searchError()) { throw new \Dcp\SearchDoc\Exception($err); } $documentList=$searchDoc->getDocumentList(); foreach ($documentList as $docid=>$doc) { printf("%d) %s (%s)\n", $docid, $doc->getTitle(), $doc->getRawValue(\Dcp\AttributeIdentifiers\Dir::ba_title)); } } catch (\Dcp\Db\Exception $e) { printf("Database Error: [%s]\n", $e->getMessage()); } catch (\Dcp\SearchDoc\Exception $e) { printf("Search Error: [%s]\n", $e->getMessage()); }
13.13.15.7 Notes
Aucune.