Condition - компонент приложения позволяет в удобной форме оформить условие в коде программы и выполнить его.
Получить любым удобным способом строитель условий (ConditionBuilder). Передать на вход метода ConditionBuilder::build() нотацию и получить экземпляр условия. Воспользоваться экземпляром условия там где требуется его проверка.
$builder = new ConditionBuilder();
$condition = $builder->build($notation);
$condition->execute($model);
- Условие сравнения
- Условие на основе функции обратного вызова
- Хеш условие
- In
- Not
- Between
- Like
- And
- Or
/** @var ConditionBuilder $builder */
$condition = $builder->build([
'>', 'attribute1', 1
]);
$condition->execute($model);
Операторы сравнения
"equal", "=", "not equal", "!=", "more", ">", "more or equal", ">=", "less", "<", "less or equal", "<=".
/** @var ConditionBuilder $builder */
$condition = $builder->build(function($model){
return $model->discount > (($model->price + $model->discount) * 0,5);
});
$condition->execute($model);
/** @var ConditionBuilder $builder */
$condition = $builder->build([
'attribute1' => ['Foo', 'Bzz'], // На основании этого элемента будет построено IN - условие
'attribute2' => 'value2'
]);
$condition->execute($model);
/** @var ConditionBuilder $builder */
// Формат для записи условия избранный первоначально
$condition = $builder->build([
'in', [
'attribute' => ['Foo', 'Bzz']
],
]);
// Формат реализованный для соответсвия Yii2
$condition = $builder->build([
'in', 'attribute', ['Foo', 'Bzz']
]);
$condition->execute($model);
/** @var ConditionBuilder $builder */
$condition = $builder->build([
'not', [
'>=', 'attribute1' , 100
]
]);
$condition->execute($model);
/** @var ConditionBuilder $builder */
// Формат для записи условия избранный первоначально
$condition = $builder->build([
'between', [
'attribute' => [1, 10]
],
]);
// Формат реализованный для соответсвия Yii2
$condition = $builder->build([
'between', [
'attribute' => [1, 10]
],
]);
$condition->execute($model);
/** @var ConditionBuilder $builder */
// Формат для записи условия избранный первоначально
$condition = $builder->build([
'like', [
'attribute' => "/F.o/"
],
]);
// Формат реализованный для соответсвия Yii2
$condition = $builder->build([
'like', 'attribute', "/F.o/"
]);
$condition->execute($model);
/** @var ConditionBuilder $builder */
$condition = $builder->build([
'and', [
'>=', 'attribute1' , 1
], [
'attribute2' => 'value2'
]
]);
$condition->execute($model);
/** @var ConditionBuilder $builder */
$condition = $builder->build([
'or', [
'>=', 'attribute1' , 1
], [
'attribute2' => 'value2'
]
]);
$condition->execute($model);