CRUDlex\MySQLData::countBy PHP Method

countBy() public method

public countBy ( $table, array $params, array $paramsOperators, $excludeDeleted )
$params array
$paramsOperators array
    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]);
    }