getList
\Bitrix\Catalog\Model\Entity public static \Bitrix\Catalog\Model\Entity::getList( array $parameters );
Метод создает ORM-выборку для таблицы дочерней модели и возвращает объект модели для чтения строк через fetch(). Статический метод.
Метод вызывают через конкретную модель. Доступные поля запроса определяет ORM-таблица этой модели.
Параметры
| Параметр | Описание |
|---|---|
$parameters | Параметры ORM-запроса: select, filter, order, group, limit, offset, runtime, cache и другие параметры, которые поддерживает ORM |
Ключи массива $parameters
| Ключ | Описание |
|---|---|
select |
Массив полей, которые нужно вернуть.
[ "ID", "FIELD_NAME", "ALIAS" => "RELATED_ENTITY.FIELD_NAME" ]Если ключ не передан, ORM выбирает все доступные скалярные и вычисляемые поля. Если список не содержит * и ключ group не задан, модель временно добавляет кешируемые поля
|
filter |
Массив условий отбора или объект \Bitrix\Main\ORM\Query\Filter\ConditionTree.
[ "=FIELD_NAME" => "value", ">NUMERIC_FIELD" => 0, "@ID" => [1, 2, 3] ] Основные операторы:
|
group |
Массив полей группировки.
[ "FIELD_NAME" ]Если ключ не передан или массив пуст, ORM не группирует строки. При наличии ключа модель не добавляет кешируемые поля в select
|
order |
Массив полей и направлений сортировки.
[ "FIELD_NAME" => "ASC", "ID" => "DESC" ]Допустимы направления ASC и DESC. ORM применяет поля последовательно в порядке элементов массива. Если ключ не передан, результат не имеет заданной сортировки
|
limit | Максимальное количество строк. Если ключ не передан, количество строк не ограничено |
offset | Количество строк, которые нужно пропустить от начала выборки. Если ключ не передан, выборка начинается с первой строки |
count_total | Значение true включает подсчет общего количества строк без учета limit и offset |
runtime | Массив полей, которые ORM создает только для текущего запроса |
data_doubling | Логическое значение, которое управляет обработкой дублирования данных при фильтрации по связям |
private_fields | Логическое значение, которое разрешает или запрещает использовать приватные поля ORM-объекта |
cache |
Настройки кеширования ORM-запроса.
[ "ttl" => 3600, "cache_joins" => true ]Ключ ttl задает время хранения результата в секундах. Ключ cache_joins разрешает кешировать запросы с объединениями таблиц
|
Возвращаемое значение
Метод возвращает общий объект \Bitrix\Catalog\Model\Entity. Фактический класс результата совпадает с классом вызова. Строки результата получают методом fetch().
Состав строки зависит от ORM-таблицы дочерней модели и ключа select. Поля товара описаны на странице Product::getList(), поля цены — на странице Price::getList().
Как работает метод
Метод получает объект модели через getEntity(), подготавливает select для заполнения внутреннего кеша и передает параметры методу getList() ORM-таблицы.
Если select задан без * и без group, модель добавляет недостающие кешируемые поля во внутренний запрос. Метод fetch() использует их для кеша и удаляет из массива результата, если разработчик не запрашивал эти поля.
Исключения
\Bitrix\Main\ArgumentException— параметры ORM-запроса содержат некорректное значение,\Bitrix\Main\ObjectNotFoundException— модель не смогла получить объект ORM-таблицы,\Bitrix\Main\ObjectPropertyException— ORM не смогла получить свойство объекта,\Bitrix\Main\SystemException— ORM не смогла построить или выполнить запрос.
Пример
<?php
use Bitrix\Catalog\Model\Product;
use Bitrix\Main\Loader;
if (!Loader::includeModule('catalog'))
{
throw new RuntimeException('Не удалось подключить модуль catalog');
}
$products = Product::getList([
'select' => ['ID', 'TYPE'],
'order' => ['ID' => 'ASC'],
'limit' => 10,
]);
while ($product = $products->fetch())
{
print_r($product);
}