Удобные классы для работы с построением условий ORM-запросов.
Упрощает создание 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
. Данная логика может быть желательной или
нежелательной в зависимости от ситуации. В будущем планируется дать возможность
управлять данным поведением.
- использует типизированный Operator вторым аргументом конструктора.
- имеет методы forAny/forAll, для включения logic через or/and;
- позволяет опционально через конструктор указать вложенные условия и логику;
- чинит баг метода
where
при входных данныхCondition[]|ConditionTree[]
.