17.8.1.7 Recherche sur les propriétés du document
17.8.1.7.1 Recherche et révision
Par défaut seule la dernière révision du document est retournée. Pour chercher
sur l'ensemble des révisions, il faut mettre la propriété latest
a false
.
$s=new SearchDoc(getDbAccess(), $familyId); $s->setObjectReturn(true); $s->latest=false; // toutes les révisions
Si la propriété locked = -1
, cela indique que le document est figé.
17.8.1.7.2 Recherche sur les propriétés
Cet exemple montre la recherche de document par le titre. Ici, tout type de document est retourné si son titre contient 'jean' en majuscule ou minuscule. Les opérateurs utilisables sont les opérateurs SQL de PostgreSQL.
$nom="jean"; $s=new SearchDoc();// famid : toute famille $s->addFilter("title ~* '%s'",$nom); // titre contient jean $s->setObjectReturn(); $dl=$s->search()->getDocumentList(); foreach ($dl as $k=>$doc) print "$k)".$doc->getTitle()."\n"; }
Dans la cas où on recherche une valeurs dans n'importe quel attribut du
document, on utilisera la propriété svalues
. Cet attribut contient
la concaténation des valeurs des autres attributs séparés par le caractère £
.
$searchExpression='myWord'; $s=new SearchDoc();// famid : toute famille $s->addFilter("svalues ~* '%s'", $searchExpression);
17.8.1.7.3 Recherche sur les états d'un document lié à un cycle de vie
La recherche des documents en fonction de leur activité ou de leur état est
faite en filtrant sur la propriété state
. La clef correspondante est
l'identifiant indiqué dans les propriétés e1
et e2
du cycle.
La recherche suivant l'activité est forcément effectuée sur les dernières révisions.
/** * @var WDoc $wdoc */ $wdoc=new_doc("","ZOO_CYCLEDA" ); // Cycle sur les demandes d'adoption $s=new SearchDoc("", "ZOO_DEMANDEADOPTION"); // Famille demande d'adoption $s->addFilter("state = '%s'", $wdoc->getFirstState()); // recherche des document étant dans la première activité $s->search();
La recherche sur l'état est effectuée sur les révisions passées.
$s=new SearchDoc("", "ZOO_DEMANDEADOPTION"); // Famille demande d'adoption $s->addFilter("state = '%s'", \Zoo\WDemandeAdoption::submittedState); // recherche des document ayant été soumis $s->latest=false; // toutes les révisions $s->addFilter("locked = -1"); // révisions passés uniquement $s->search();