Конструктор запросов

Особенности и ограничения

В REST API Битрикс24 достаточно неплохой механизм для фильтрации данных, но у него есть ряд недостатков:

  • У разных сущностей может отличаться синтаксис или логика работы некоторых операторов

  • При выборке полей у разных сущностей разные значения для выбора всех полей

  • При пагинации большинства сущностей номер страниц должен быть кратен 50, а выбирать можно только по 50 элементов

В нашей реализации решена каждая из этих проблем, но в текущей версии пакета из-за реализации выборки данных ограничена сортировка элементов только по возрастанию первичного ключа (в будущих обновлениях это будет исправлено)

Как строить запросы

Есть два способа строить запросы:

  • Через фасад базы данных (\Illuminate\Support\Facades\DB) - на выходе при выполнении метода получения будут массивы данных в коллекции

$query = DB::table('crm_lead')->select(['ID'])->where('ID', '>=', 17);

$results = $query->get();
  • Через модели Eloquent - на выходе будут модели в Eloquent-коллекции. Этот метод использует больше оперативной памяти, чем предыдущий и может быть незначительно медленнее, но более удобен в большинстве случаев при разработке.

$query = Lead::where('ID', '>=', 17)->select(['ID']);

$models = $query->get();

Разрешённые операторы

Большинство фильтров позволяет самостоятельно указать один из доступных операторов:

Оператор
Описание
По умолчанию
Устарел

“”, like, ilike

LIKE в SQL

=

Равно

Да

<

Меньше

>

Больше

<=

Меньше или равно

>=

Больше или равно

<>, !=

Не равно

При отрицании

!

NOT LIKE в SQL

Да

between, ><

Между

Фильтры

Базовый

Год

Между

Null или пустое значение

Одно из значение

Полнотекстовый поиск

Дата

Фильтр по дате без учёта времени

Last updated