Попробую оживить пост...
Как я понимаю $list = getList() уже делает запрос к базе данных?
То есть если мы используем getList() где есть лимиты и оффсеты там без толку передавать этот объект в конструктор CDBResult. А делать выборку всех записей тоже не хорошо.
Я пока пришел примерно к такой схеме:
На самом деле мне кажется орм битрикса не очень удобно и нативно сделано. Гораздо удобнее реализована цепочка вызовов в Yii2 где можно использовать такие конструкции
Model::find()->where(...)->all();
Model::find()->where(...)->count();
тут find не делает запрос а создает екземпляр класса и дальше по цепочке собираются параметры. И запрос происходит уже в конечном методе.
На мой взгляд очень понятно и удобно и хотелось бы удобства в Битрикс.
Как я понимаю $list = getList() уже делает запрос к базе данных?
То есть если мы используем getList() где есть лимиты и оффсеты там без толку передавать этот объект в конструктор CDBResult. А делать выборку всех записей тоже не хорошо.
Я пока пришел примерно к такой схеме:
Код |
---|
//Общий запрос $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'); |
На самом деле мне кажется орм битрикса не очень удобно и нативно сделано. Гораздо удобнее реализована цепочка вызовов в Yii2 где можно использовать такие конструкции
Model::find()->where(...)->all();
Model::find()->where(...)->count();
тут find не делает запрос а создает екземпляр класса и дальше по цепочке собираются параметры. И запрос происходит уже в конечном методе.
На мой взгляд очень понятно и удобно и хотелось бы удобства в Битрикс.