public function countBy($table, array $params, array $paramsOperators, $excludeDeleted)
{
$queryBuilder = $this->database->createQueryBuilder();
$queryBuilder->select('COUNT(id)')->from('`' . $table . '`', '`' . $table . '`');
$deletedExcluder = 'where';
$i = 0;
$manyFields = [];
foreach ($params as $name => $value) {
if ($this->definition->getType($name) === 'many') {
$manyFields[] = $name;
continue;
}
$queryBuilder->andWhere('`' . $name . '` ' . $paramsOperators[$name] . ' ?')->setParameter($i, $value, \PDO::PARAM_STR);
$i++;
$deletedExcluder = 'andWhere';
}
$idsToInclude = $this->getManyIds($manyFields, $params);
if (!empty($idsToInclude)) {
$queryBuilder->andWhere('id IN (?)')->setParameter($i, $idsToInclude, Connection::PARAM_STR_ARRAY);
$deletedExcluder = 'andWhere';
}
if ($excludeDeleted) {
$queryBuilder->{$deletedExcluder}('deleted_at IS NULL');
}
$queryResult = $queryBuilder->execute();
$result = $queryResult->fetch(\PDO::FETCH_NUM);
return intval($result[0]);
}