# Recherche de données brutes Smart Elements
La classe Anakeen\Search\SearchElementData
hérite de la Anakeen\Search\SearchElements
La différence réside dans la méthode getResult()
qui retourne un tableau indexé avec les valeurs des propriétés et des
Smart Field des SmartElements. Dans ce cas, seules des données brutes sont retournées.
Avertissement
Le getResult()
ne retourne les résultats que si la méthode search()
a été appelée avant.
# Exemple recherche de données brutes
- Récupération de la liste des données des "dossiers"
<?php
use Anakeen\Search\SearchElementData;
$seData = new SearchElementData("DIR");
$seData->search();
$list = $seData->getResults();
foreach ($list as $seId => $smartElementData) {
$desc = \Anakeen\Search\SearchElementData::getRawData($smartElementData, \SmartStructure\Fields\Dir::ba_desc);
printf(
"(%d) %s (%s)\n",
$seId,
$smartElementData["title"],
$smartElementData[\SmartStructure\Fields\Dir::ba_desc] ?: "Pas de description"
);
}
# Récupération d'une donnée SmartField brute
Le tableau retourné par getResult()
est indéxé par les noms des Smart Fields et des propriétés. Si votre recherche
porte sur une Smart Structure précise, les données des champs sont directement accessible par l'index. Par contre, si la
recherche est multi-structure, ou si la recherche porte sur une structure qui a des enfants alors les champs spécifiques
des enfants ne sont accessibles directement avec l'index. Dans ce cas, il faut utiliser la méthode
\Anakeen\Search\SearchElementData::getRawData($smartElementData, $fieldId)
.
Exemple recherche de tous les Smart Element qui ont un smart field "ba_desc" non vide.
<?php
use Anakeen\Search\SearchElementData;
$seData = new SearchElementData();
$seData->addFilter("fieldvalues ->> 'ba_desc' is not null");
$seData->search();
$list = $seData->getResults();
foreach ($list as $docid => $doc) {
printf(
"(%d) %s (%s)\n",
$docid,
$doc["title"],
SearchElementData::getRawData($doc, "ba_desc") ?: "Pas de description"
);
}