$dbItems = \Bitrix\Iblock\ElementTable::getList(array(
'order' => array('SORT' => 'ASC'), // сортировка
'select' => array('ID', 'NAME', 'IBLOCK_ID', 'SORT', 'TAGS'), // выбираемые поля, без свойств. Свойства можно получать на старом ядре \CIBlockElement::getProperty
'filter' => array('IBLOCK_ID' => 4), // фильтр только по полям элемента, свойства (PROPERTY) использовать нельзя
'group' => array('TAGS'), // группировка по полю, order должен быть пустой
'limit' => 1000, // целое число, ограничение выбираемого кол-ва
'offset' => 0, // целое число, указывающее номер первого столбца в результате
'count_total' => 1, // дает возможность получить кол-во элементов через метод getCount()
'runtime' => array(), // массив полей сущности, создающихся динамически
'data_doubling' => false, // разрешает получение нескольких одинаковых записей
'cache' => array( // Кеш запроса, почему-то в офф. документации об этом умалчивают
'ttl' => 3600,
'cache_joins' => true
),
));
Варианты методов для обработки объекта
$dbItems->fetch(); // или $dbItems->fetchRaw() получение одной записи, можно перебрать в цикле while ($arItem = $dbItems->fetch())
$dbItems->fetchAll(); // получение всех записей
$dbItems->getCount(); // кол-во найденных записей без учета limit, доступно если при запросе было указано count_total = 1
$dbItems->getSelectedRowsCount(); // кол-во полученных записей с учетом limit
Пример запроса к разным таблицам
\Bitrix\Iblock\TypeTable::getList(); // типы инфоблоков \Bitrix\Iblock\IblockTable::
getList
(); // инфоблоки \Bitrix\Iblock\PropertyTable::
getList
(); // свойства инфоблоков \Bitrix\Iblock\PropertyEnumerationTable::getList(); // значения свойств, например списков \Bitrix\Iblock\SectionTable::getList(); // Разделы инфоблоков \Bitrix\Iblock\ElementTable::
getList
(); // Элементы инфоблоков \Bitrix\Iblock\InheritedPropertyTable::getList(); // Наследуемые свойства (seo шаблоны)
Другие методы, кроме GetList
add(array $data) // добавление элемента
addMulti($rows, $ignoreEvents = false)
checkFields(Result $result, $primary, array $data) // метод проверяет поля данных перед записью в БД.
delete($primary) // удаление элемента по ID
getById($id) // получение элемента по ID
getByPrimary($primary, array $parameters = array()) // метод возвращает выборку по первичному ключу сущности и по опциональным параметрам \Bitrix\Main\Entity\DataManager::getList.
getConnectionName() // метод возвращает имя соединения для сущности. 12.0.9
getCount($filter = array(), array $cache = array()) // метод выполняет COUNT запрос к сущности и возвращает результат. 12.0.10
getEntity() // метод возвращает объект сущности.
getList(array $parameters = array()) // получение элементов, подробнее было выше
getMap() // метод возвращает описание карты сущностей. 12.0.7
getRow(array $parameters) // метод возвращает один столбец (или null) по параметрам для \Bitrix\Main\Entity\DataManager::getList.
getRowById($id) // метод возвращает один столбец (или null) по первичному ключу сущности. 14.0.0
getTableName() // метод возвращает имя таблицы БД для сущности. 12.0.7
query() // метод создаёт и возвращает объект запроса для сущности.
update($primary, array $data) // обновление элемента по ID
updateMulti($primaries, $data, $ignoreEvents = false)
enableCrypto($field, $table = null, $mode = true) // метод устанавливает флаг поддержки шифрования для поля. 17.5.14
cryptoEnabled($field, $table = null) // метод возвращает true если шифрование разрешено для поля. 17.5.14
Свойства элементов инфоблока получить одним запросом не получится, так что придётся использовать метод старого ядра
$dbItem = \Bitrix\Iblock\ElementTable::
getList
(array( 'select' => array('ID', 'IBLOCK_ID', 'NAME'), 'filter' => array('IBLOCK_ID' => $arIblock['ID']), 'limit' => 100, 'order' => array('TIMESTAMP_X' => 'ASC') )); while ($arItem = $dbItem->fetch()) { $dbProperty = \CIBlockElement::getProperty($arItem['IBLOCK_ID'], $arItem['ID'], array("sort", "asc"), array('CODE' => 'LINK_ARTICLES')); while ($arProperty = $dbProperty->GetNext()) { if ($arProperty['VALUE']) { $arItem['LINK_ARTICLES'][] = $arProperty['VALUE']; } } $arItems[] = $arItem; }