Попробую оживить пост...
Как я понимаю $list = getList() уже делает запрос к базе данных?
То есть если мы используем [B]getList() [/B]где есть лимиты и оффсеты там без толку передавать этот объект в конструктор [B]CDBResult. [/B]А делать выборку всех записей тоже не хорошо.
[B]
[/B]Я пока пришел примерно к такой схеме:
[CODE]//Общий запрос
$this->object = $model::getList([
'order' => ['ID' => 'DESC'],
'filter' => $filter,
'limit' => $this->limit,
'offset' => $this->offset
]);
//Сколько записей у пользователяы
$maxRecord = $model::getList([
'select' => [new Entity\ExpressionField('CNT', 'COUNT(*)')],
'filter' => $filter,
])->fetch()['CNT'];
//навигация
$this->nav = new \CDBResult();
$this->nav->NavStart($this->limit);
$this->nav->NavPageCount = round($this->maxRecord / $this->limit);
$this->nav->NavPageNomer = $this->page;
$this->arResult['navPage'] = $this->nav->GetPageNavStringEx($navComponentObject, '', 'mini', 'Y');[/CODE]
На самом деле мне кажется орм битрикса не очень удобно и нативно сделано. Гораздо удобнее реализована цепочка вызовов в Yii2 где можно использовать такие конструкции
Model::find()->where(...)->all();
Model::find()->where(...)->count();
тут find не делает запрос а создает екземпляр класса и дальше по цепочке собираются параметры. И запрос происходит уже в конечном методе.
На мой взгляд очень понятно и удобно и хотелось бы удобства в Битрикс.
[B]
[/B]
Как я понимаю $list = getList() уже делает запрос к базе данных?
То есть если мы используем [B]getList() [/B]где есть лимиты и оффсеты там без толку передавать этот объект в конструктор [B]CDBResult. [/B]А делать выборку всех записей тоже не хорошо.
[B]
[/B]Я пока пришел примерно к такой схеме:
[CODE]//Общий запрос
$this->object = $model::getList([
'order' => ['ID' => 'DESC'],
'filter' => $filter,
'limit' => $this->limit,
'offset' => $this->offset
]);
//Сколько записей у пользователяы
$maxRecord = $model::getList([
'select' => [new Entity\ExpressionField('CNT', 'COUNT(*)')],
'filter' => $filter,
])->fetch()['CNT'];
//навигация
$this->nav = new \CDBResult();
$this->nav->NavStart($this->limit);
$this->nav->NavPageCount = round($this->maxRecord / $this->limit);
$this->nav->NavPageNomer = $this->page;
$this->arResult['navPage'] = $this->nav->GetPageNavStringEx($navComponentObject, '', 'mini', 'Y');[/CODE]
На самом деле мне кажется орм битрикса не очень удобно и нативно сделано. Гораздо удобнее реализована цепочка вызовов в Yii2 где можно использовать такие конструкции
Model::find()->where(...)->all();
Model::find()->where(...)->count();
тут find не делает запрос а создает екземпляр класса и дальше по цепочке собираются параметры. И запрос происходит уже в конечном методе.
На мой взгляд очень понятно и удобно и хотелось бы удобства в Битрикс.
[B]
[/B]