13.13.15 SearchDoc::search()

Cette méthode permet d'exécuter la recherche.

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 ou null 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éthode SearchDoc::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.

13.13.15.8 Voir aussi

×