public function findPairs($criteria, $value = NULL, $orderBy = [], $key = NULL)
{
if (!is_array($criteria)) {
$key = $orderBy;
$orderBy = $value;
$value = $criteria;
$criteria = [];
}
if (!is_array($orderBy)) {
$key = $orderBy;
$orderBy = [];
}
if (empty($key)) {
$key = $this->getClassMetadata()->getSingleIdentifierFieldName();
}
$query = $this->createQueryBuilder('e')->whereCriteria($criteria)->select("e.{$value}", "e.{$key}")->resetDQLPart('from')->from($this->getEntityName(), 'e', 'e.' . $key)->autoJoinOrderBy((array) $orderBy)->getQuery();
try {
return array_map(function ($row) {
return reset($row);
}, $query->getResult(AbstractQuery::HYDRATE_ARRAY));
} catch (\Exception $e) {
throw $this->handleException($e, $query);
}
}