lune / osmosis
一个过滤API
v0.0.1
2017-01-15 12:48 UTC
Requires
- php: >=7.0
Requires (Dev)
- phpunit/phpunit: ^5.7
This package is auto-updated.
Last update: 2024-09-24 20:53:27 UTC
README
一个用于过滤数据的流畅接口。
安装
安装Osmosis推荐使用 Composer
composer require lune/osmosis
操作符
以下操作符可用
equals
inArray
greaterThan
greaterThanOrEqual
lessThan
lessThanOrEqual
not
notInArray
数据源
以下数据源已包含
ArrayDataSource
包装数组并过滤
$filter = new Lune\Osmosis\Filter() $filter ->equals('a', 1) ->greaterThan('b', 100); $array = [ ['a'=>1, 'b'=>20], ['a'=>1, 'b'=>120], ['a'=>3, 'b'=>120] ]; //Convert our array to a DataSourceInterface object $source = new Lune\Osmosis\DataSource\ArrayDataSource($array); //Apply the filter to our datasource $result = $filter->apply($source); print_r((array) $result); //[['a'=>1, 'b'=>'120']];
SQLDataSource
创建部分SQL
$filter = new Lune\Osmosis\Filter() $filter->equals('ID', 1); $source = new Lune\Osmosis\DataSource\SQLDataSource(); $result = $filter->apply($source); //Execution example $pdo = new \PDO(...); $statement = $pdo->prepare("SELECT * FROM `users` WHERE {$result}"); $statement->execute($result->getVariables())->fetchAll();
请注意 Osmosis绝不是一个完整的查询构建器,也不旨在成为。
定义过滤器
要添加过滤器,请简单使用提供的方法
$filter = new Lune\Osmosis\Filter() $filter ->equals('a', 1) ->greaterThan('b', 100);
您也可以将可调用的函数作为构造函数参数使用
$filter = new Lune\Osmosis\Filter(function(FilterInterface $f){ $f->equals('a', 1)->greaterThan('b', 100); });