private function fetchCounts(SqlBuilder $builder, array $values)
{
$targetStoragePrimaryKey = $this->targetMapper->getStorageReflection()->getStoragePrimaryKey()[0];
$builder = clone $builder;
$table = $builder->getTableName();
$builder->addSelect("{$table}.{$this->joinStorageKey}");
$builder->addSelect("COUNT({$table}.{$targetStoragePrimaryKey}) AS count");
$builder->addWhere("{$table}.{$this->joinStorageKey}", $values);
$builder->setGroup("{$table}.{$this->joinStorageKey}");
$builder->setOrder([], []);
$result = $this->context->queryArgs($builder->buildSelectQuery(), $builder->getParameters());
$counts = [];
foreach ($result->fetchAll() as $row) {
$counts[$row->{$this->joinStorageKey}] = $row['count'];
}
return $counts;
}