Skip to content

Pagination not working (Cake 3.6.7) #26

@minlite

Description

@minlite

When using CakePHP 3.6.7, the pagination function is not working. It always seems to think that the total row count for a query is 1, therefore the pagination component sets page count to 1.

I've traced this issue down to the fact that that CakePHP pagination module has the following code:

cakephp/src/Datasource/Paginator.php (188):

$count = $cleanQuery->count();
....
$pageCount = max((int)ceil($count / $limit), 1);
$page = min($page, $pageCount);

Here, query is an instance of MongoQuery. The $count seems to be always set to 1, no matter how many records there are in the database.

I was able to fix this temporarily by changing the following in src/ORM/Table.php:

public function find($type = 'all', $options = [])
    {
        $query = new MongoFinder($this->__getCollection(), $options);
        $queryWoOptions = new MongoFinder($this->__getCollection(), []);
        $method = 'find' . ucfirst($type);
        if (method_exists($query, $method)) {
            $alias = $this->getAlias();
            $mongoCursor = $query->{$method}();
            $mongoCursorWoOptions = $queryWoOptions->{$method}();
            if ($mongoCursor instanceof \MongoDB\Model\BSONDocument) {
                return (new Document($mongoCursor, $alias))->cakefy();
            } elseif (is_array($mongoCursor)) {
                return $mongoCursor;
            }
            $results = new ResultSet($mongoCursor, $alias);
            $resultsWoOptions = new ResultSet($mongoCursorWoOptions, $alias);

            if (isset($options['whitelist'])) {
                return new MongoQuery($results->toArray(), count($resultsWoOptions->toArray()));
            } else {
                return $results->toArray();
            }
        }

        throw new BadMethodCallException(
            sprintf('Unknown method "%s"', $method)
        );
    }

(Notice the addition of $queryWoOptions, $mongoCursorWoOptions, and $resultsWoOptions )

I will try to track this down more, but just wanted to open an issue to see if the developers might have an idea about this issue.

Thanks!

Metadata

Metadata

Assignees

No one assigned

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions