Как получить количество строк из таблицы в доктрине - PullRequest
1 голос
/ 17 августа 2010

Я написал универсальный скрипт для получения всех строк из моделей таблиц Doctrine, но если количество строк слишком велико, я получаю исключение:

Cannot define NULL as part of query when defining 'offset'.

Запуск скрипта:

$table = new JV_Model_StoreOrder();
$this->data['list'] = $table->getTable()->findAll()->toArray();

Я понимаю из вышеприведенной ошибки, что связано с большим количеством записей в таблице (> 20 000). Поэтому я решил сделать пагинатор, чтобы побить рекорды на страницах в 100 штук.

Не могли бы вы помочь мне, как я могу сделать что-то подобное:

...
$total_amount = $table->getTable()->count();
$this->data['list'] = $table->getTable()->offset(0)->limit(100)
->findAll()->toArray();
...

1 Ответ

1 голос
/ 17 августа 2010

Doctrine имеет свой собственный компонент разбиения на страницы:

Пример из руководства Доктрины:

// Defining initial variables
$currentPage = 1;
$resultsPerPage = 50;

// Creating pager object
$pager = new Doctrine_Pager(
      Doctrine_Query::create()
            ->from( 'User u' )
            ->leftJoin( 'u.Group g' )
            ->orderby( 'u.username ASC' ),
      $currentPage, // Current page of request
      $resultsPerPage // (Optional) Number of results per page. Default is 25
);
...