luckyteam / arraydb-condition

dev-master 2017-03-26 15:16 UTC

This package is auto-updated.

Last update: 2024-09-29 05:01:18 UTC


README

条件 - 应用程序组件,允许以方便的形式在代码中编写条件并执行它。

如何使用?

以任何方便的方式获取条件构建器(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);

比较运算符

"等于", "=", "不等于", "!=", "大于", ">", "大于等于", ">=", "小于", "<", "小于等于", "<="。

基于函数调用的条件

/** @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);

IN条件

/** @var ConditionBuilder $builder */
// Формат для записи условия избранный первоначально
$condition = $builder->build([
    'in', [
        'attribute' => ['Foo', 'Bzz']
    ],
]);

// Формат реализованный для соответсвия Yii2
$condition = $builder->build([
    'in', 'attribute', ['Foo', 'Bzz']
]);
$condition->execute($model);

NOT条件

/** @var ConditionBuilder $builder */
$condition = $builder->build([
    'not', [
        '>=', 'attribute1' , 100
    ]
]);
$condition->execute($model);

BETWEEN条件

/** @var ConditionBuilder $builder */
// Формат для записи условия избранный первоначально
$condition = $builder->build([
    'between', [
        'attribute' => [1, 10]
    ],
]);

// Формат реализованный для соответсвия Yii2
$condition = $builder->build([
    'between', [
        'attribute' => [1, 10]
    ],
]);
$condition->execute($model);

LIKE条件

/** @var ConditionBuilder $builder */
// Формат для записи условия избранный первоначально
$condition = $builder->build([
    'like', [
        'attribute' => "/F.o/"
    ],
]);

// Формат реализованный для соответсвия Yii2
$condition = $builder->build([
    'like', 'attribute', "/F.o/"
]);
$condition->execute($model);

AND条件

/** @var ConditionBuilder $builder */
$condition = $builder->build([
    'and', [
        '>=', 'attribute1' , 1
    ], [
        'attribute2' => 'value2'
    ]
]);
$condition->execute($model);

OR条件

/** @var ConditionBuilder $builder */
$condition = $builder->build([
    'or', [
        '>=', 'attribute1' , 1
    ], [
        'attribute2' => 'value2'
    ]
]);
$condition->execute($model);