/**
* Will perform multiple sub-searches.
* Results from first search will be transformed and passed as CriteriaCollection
* to another sub-search.
* Whole process will return collection of results from each sub-search.
*
* @param CriteriaCollectionInterface $criteriaCollection
*
* @return ResultCollection
*/
public function search(CriteriaCollectionInterface $criteriaCollection)
{
$previousCriteria = $criteriaCollection;
$previousResults = null;
$result = new ResultCollection();
/** @var CellInterface $cell */
foreach ($this->cellCollection as $name => $cell) {
if ($cell->getTransformer()->skip($previousResults)) {
continue;
}
$previousResults = $cell->getSearcher()->search($previousCriteria);
$previousCriteria = $this->getNewCriteria($cell, $previousCriteria, $previousResults);
$result->addNamedItem($name, $previousResults);
}
return $result;
}