src/ORM/Queries/SQLSelect.php
public function count($column = null)
    {
        // we can't clear the select if we're relying on its output by a HAVING clause
        if (!empty($this->having)) {
            $records = $this->execute();
            return $records->numRecords();
        } elseif ($column == null) {
            // Choose a default column
            if ($this->groupby) {
                $column = 'DISTINCT ' . implode(", ", $this->groupby);
            } else {
                $column = '*';
            }
        }

        $clone = clone $this;
        $clone->select = array('Count' => "count($column)");
        $clone->limit = null;
        $clone->orderby = null;
        $clone->groupby = null;

        $count = (int)$clone->execute()->value();
        // If there's a limit set, then that limit is going to heavily affect the count
        if ($this->limit) {
            if ($this->limit['limit'] !== null && $count >= ($this->limit['start'] + $this->limit['limit'])) {
                return $this->limit['limit'];
            } else {
                return max(0, $count - $this->limit['start']);
            }

        // Otherwise, the count is going to be the output of the SQL query
        } else {
            return $count;
        }
    }
public function count($column = null)
    {
        // we can't clear the select if we're relying on its output by a HAVING clause
        if (!empty($this->having)) {
            $records = $this->execute();
            return $records->numRecords();
        } elseif ($column == null) {
            // Choose a default column
            if ($this->groupby) {
                $column = 'DISTINCT ' . implode(", ", $this->groupby);
            } else {
                $column = '*';
            }
        }

        $clone = clone $this;
        $clone->select = array('Count' => "count($column)");
        $clone->limit = null;
        $clone->orderby = null;
        $clone->groupby = null;

        $count = (int)$clone->execute()->value();
        // If there's a limit set, then that limit is going to heavily affect the count
        if ($this->limit) {
            if ($this->limit['limit'] !== null && $count >= ($this->limit['start'] + $this->limit['limit'])) {
                return $this->limit['limit'];
            } else {
                return max(0, $count - $this->limit['start']);
            }

        // Otherwise, the count is going to be the output of the SQL query
        } else {
            return $count;
        }
    }
public function count ( $ column = null ) { // we can't clear the select if we're relying on its output by a HAVING clause if ( ! empty ( $ this -> having ) ) { $ records = $ this -> execute ( ) ; return $ records -> numRecords ( ) ; } elseif ( $ column == null ) { // Choose a default column if ( $ this -> groupby ) { $ column = 'DISTINCT ' . implode ( ", " , $ this -> groupby ) ; } else { $ column = '*' ; } } $ clone = clone $ this ; $ clone -> select = array ( 'Count' => "count($column)" ) ; $ clone -> limit = null ; $ clone -> orderby = null ; $ clone -> groupby = null ; $ count = ( int ) $ clone -> execute ( ) -> value ( ) ; // If there's a limit set, then that limit is going to heavily affect the count if ( $ this -> limit ) { if ( $ this -> limit [ 'limit' ] !== null && $ count >= ( $ this -> limit [ 'start' ] + $ this -> limit [ 'limit' ] ) ) { return $ this -> limit [ 'limit' ] ; } else { return max ( 0 , $ count - $ this -> limit [ 'start' ] ) ; } // Otherwise, the count is going to be the output of the SQL query } else { return $ count ; } }
Return the number of rows in this query, respecting limit and offset.

@param string $column Quoted, escaped column name
@return int
Return the number of rows in this query respecting limit and offset .