I have some code that I have tried modifying so that the array is sorted alphabetically, I thought the following:
public function getOptions(array $aggs, $filterEmptyOptions = true)
Should be:
public function getOptions(array sort($aggs), $filterEmptyOptions = true)
But it doesn't work, where should I add sort() to the array?
EDIT: I am trying to sort the brewery names alphabetically
This is my full code if it makes it easier?
class BreweryBoolMustFilter implements BoolFilterInterface
{
/**
* @param Query $query
* @param Query\BoolQuery $bool
* @param Request $request
* @param array $filters
*/
public function __construct(Query $query, Query\BoolQuery $bool, Request $request, array &$filters)
{
if ($request->query->has('brewery') && (int) $request->query->get('brewery'))
{
$filters['brewery'] = (int) $request->query->get('brewery');
$bool->addMust(new Query\Term(['breweryId' => $filters['brewery']]));
}
$aggs3 = new Terms('breweries');
$aggs3->setField('breweryId');
$aggs3->setSize(100);
$query->addAggregation($aggs3);
}
/**
* @param array $aggs
* @param bool $filterEmptyOptions
*
* @return array
*/
public function getOptions(array $aggs, $filterEmptyOptions = true)
{
$breweriesObjects = (new BreweryQuery)->find();
$breweries = [];
foreach ($breweriesObjects as $breweryObject)
{
$breweries[$breweryObject->getId()] = [
'name' => $breweryObject->getName(),
'doc_count' => 0,
];
}
foreach ($aggs['breweries']['buckets'] as $bucket)
{
if (isset($breweries[$bucket['key']]))
{
$breweries[$bucket['key']]['doc_count'] = $bucket['doc_count'];
}
}
if (true === $filterEmptyOptions)
{
foreach ($breweries as $key => $brewery)
{
if (0 == $brewery['doc_count'])
{
unset($breweries[$key]);
}
}
}
return $breweries;
}