maximaster/bitrix-orm-condition

Удобные классы для работы с построением условий ORM-запросов.

v1.0.1 2024-08-28 09:02 UTC

This package is auto-updated.

Last update: 2024-10-28 09:23:45 UTC


README

Удобные классы для работы с построением условий ORM-запросов.

Класс Column

Упрощает создание Condition.

  • создаётся из имени колонки;
  • с помощью методов equals, greater и аналогичных создаёт Condition или ConditionTree:
use Maximaster\BitrixOrmCondition\Column;

// Получаем ConditionTree который можно добавить в ::query()->where(...).
Column::of('NAME')->equals('Вася')->toTree();
// Есть ряд удобных методов строго типизирующие входные значения.
Column::of('ID')->foundIn(ElementTable::query()->where(/*...*/));

Важно! На текущий момент класс использует стратегию "NULL - это минус бесконечность". Например, при использовании метода less(5) вы получите и те строки, у которых значение NULL. Данная логика может быть желательной или нежелательной в зависимости от ситуации. В будущем планируется дать возможность управлять данным поведением.

Класс Condition

  • использует типизированный Operator вторым аргументом конструктора.

Класс ConditionTree

  • имеет методы forAny/forAll, для включения logic через or/and;
  • позволяет опционально через конструктор указать вложенные условия и логику;
  • чинит баг метода where при входных данных Condition[]|ConditionTree[].