mnemesong / fit
The package provides objects and an interface for build match conditions.
Requires
- php: >=7.4
- mnemesong/structure: 0.4.*
- webmozart/assert: 1.11.*
Requires (Dev)
This package is not auto-updated.
Last update: 2023-03-29 06:37:19 UTC
README
- The documentation is written in two languages: Russian and English.
- Документация написана на двух языках: русском и английском.
General description / Общее описание
RUS:
Пакет предоставляет объекты и интерфейс для выражения условий поиска (описывают услоние выборки записей из хранилища). Для быстрого построения используется билдер Fit (например Fit::field('name')->val('=', 'John'))
Requirements / Требования
- PHP >= 7.4
- Composer >=2.0
Installation / Установка
composer require "mnemesong/fit"
Conditions / Условия
RUS:
Выразитель условий поиска Fit позволяет быстро выражать любые условия поиска различных типов.
Field with array comparing fits / Сравнение значений поля таблицы с массивом
ENG:
They have the general form: Fit::field(string <column name>)
->arr(string <comparison operator>, array <comparison array>)
Allowed operators for array comparison:
"in"
- checks whether the value in the column is included in the comparison array"!in"
- checks if the value in the column is not included in the comparison array
Example:
Fit::field("age")->arr("in", [11, 22, 33, 44, 55])
RUS:
Имеют общий вид: Fit::field(string <имя колонки>)->arr(string <оператор сравнения>, array <массив сравнения>)
Допустимые операторы для сравнения с массивом:
"in"
- проверяет вхождение значения в колонке в массив сравнения"!in"
- проверяет отсутствие вхождения значения в колонке в массив сравнения
Пример:
Fit::field("age")->arr("in", [11, 22, 33, 44, 55])
Fields comparing fits / Сравнение колонок таблицы
ENG:
They have a general form: Fit::field(string <column name>)->field(string <comparison operator>, string <column name>)
Allowed operators for comparing table columns:
"="
- checks the equality of values in two columns of the same table row"!="
- checks the inequality of values in two columns of the same table row">"
,"!>"
,">="
,"<"
,"!<"
,"<="
- compare values in two columns of one table row
Additionally, you can specify the comparison method:
->asStr()
- character-by-character comparison from left to right - the default comparison method.->asNum()
- Attempt to cast to numbers and compare as numbers.
Example:
Fit::field("index")->field(">", "index")->asNum()
RUS:
Имеют общий вид: Fit::field(string <имя колонки>)->field(string <оператор сревнения>, string <имя колонки>)
Допустимые операторы для сравнения колонок таблицы:
"="
- проверяет равенство значений в двух колонках одной строки таблицы"!="
- проверяет неравенство значений в двух колонках одной строки таблицы">"
,"!>"
,">="
,"<"
,"!<"
,"<="
- сравнивают значений в двух колонках одной строки таблицы
Дополнительно можно указать способ сравнения:
->asStr()
- посимвольное сравнение с лево направо - способ сравнения по умолчанию.->asNum()
- Попытка приведения к числам и сравнения как чисел.
Пример:
Fit::field("index")->field(">", "index")->asNum()
Field with scalar val comparing / Сравнение поля cо скалярным значением
ENG:
They have the general form: Fit::field(string <column name>)->val(string <comparison operator>, string <string value>)
Allowed operators to compare against a scalar value:
"="
- checks for equality (NULL-safe) of the column value with the specified string value"!="
- checks if the (NULL-safe) value of the column with the specified string value is not equal">"
,"!>"
,">="
,"<"
,"!<"
,"<="
- compares the values of the column with the specified value
Additionally, you can specify the comparison method:
->asStr()
- character-by-character comparison from left to right - the default comparison method.->asNum()
- Attempt to cast to numbers and compare as numbers.
Example:
Fit::field("bank-account")->val("!<", "71239-318941")->asStr()
RUS:
Имеют общий вид: Fit::field(string <имя колонки>)->val(string <оператор сравнения>, string <строковое значение>)
Допустимые операторы для сравнения cо скалярным значением:
"="
- проверяет равенство (NULL-безопасное) значения колонке с указанным строковым значением"!="
- проверяет неравенство (NULL-безопасное) значения колонке с указанным строковым значением">"
,"!>"
,">="
,"<"
,"!<"
,"<="
- сравнивает значения колонке с указанным значением
Дополнительно можно указать способ сравнения:
->asStr()
- посимвольное сравнение с лево направо - способ сравнения по умолчанию.->asNum()
- Попытка приведения к числам и сравнения как чисел.
Пример:
Fit::field("bank-account")->val("!<", "71239-318941")->asStr()
Unary fits / Унарные сравнения
ENG:
They have the general form: Fit::field(string <column name>)->is(string <comparison operator>)
Allowed operators for unary comparison:
"null"
- checks if column value is NULL"!null"
- checks if column value is null
Example:
Fit::field("bank-account")->is("!null")
RUS:
Имеют общий вид: Fit::field(string <имя колонки>)->is(string <оператор сравнения>)
Допустимые операторы для унарного сравнения:
"null"
- проверяет равенство значения колонки NULL"!null"
- проверяет неравенство значения колонки NULL
Пример:
Fit::field("bank-account")->is("!null")
Complexity composite fits / Сложные составные условия поиска
ENG:
Methods: Fit::andThat()
, Fit::orThat()
help to compose complex logical
compositions from search terms
Example:
Fit::andThat([
Fit::field("bank-account")->val("!<", "71239-318941")->asStr(),
Fit::field("name")->is("null")
])
RUS:
Методы: Fit::andThat()
, Fit::orThat()
помогают составлять сложные логические
композиции из условий поиска
Пример:
Fit::andThat([
Fit::field("bank-account")->val("!<", "71239-318941")->asStr(),
Fit::field("name")->is("null")
])
Unary composite fits / Унарные составные условия поиска
ENG:
Currently, this class represents the only negation (NULL-safe) search condition:
Fit::notThat()
Example:
Fit::notThat(Fit::field("bank-account")->val("!<", "71239-318941")->asStr())
RUS:
В настоящий момент этот класс представляет единственная условие поиска отрицания (NULL-безопасного):
Fit::notThat()
Пример:
Fit::notThat(Fit::field("bank-account")->val("!<", "71239-318941")->asStr())
Converting Structures to fit conditions / Преобразование структур в условия
ENG
The Fit::struct()
method allows you to turn Structures into search conditions. This is useful when you need to check
in some storage, the presence of records in many respects similar to a specific structure.
Example
$struct = new Structure(['name' => 'Victoria', 'age' => 21]);
$spec = Fit::struct($struct);
The result will be equivalent to the following code:
$spec = Fit::andThat([
Fit::field('name')->val('=','Victoria')->asStr(),
Fit::field('age')->val('=','21')->asStr(),
]);
RUS
Метод Fit::struct()
позволяет превращать Структуры в условия поиска. Это полезно когда нужно проверить
в каком-то хранилище наличие записей по многим параметрам похожих на конкретную структуру.
Пример
$struct = new Structure(['name' => 'Victoria', 'age' => 21]);
$spec = Fit::struct($struct);
Результат будет эквивалентен следующему коду:
$spec = Fit::andThat([
Fit::field('name')->val('=','Victoria')->asStr(),
Fit::field('age')->val('=','21')->asStr(),
]);