public function provideExpressionTestCases() { return ['value' => [Expression::value('foo'), function () { return Expression\Expr::value('foo'); }], 'values' => [Expression::exp('array', [Expression::value('foo'), Expression::value('bar'), Expression::value('baz')]), function () { return Expression\Expr::values(['foo', 'bar', 'baz']); }], 'field' => [Expression::exp('field', [Expression::value('foo')]), function () { return Expression\Expr::field('foo'); }], 'all' => [Expression::exp('all', [Expression::exp('foo'), Expression::exp('bar')]), function () { return Expression\Expr::all([Expression::exp('foo'), Expression::exp('bar')]); }], 'any' => [Expression::exp('any', [Expression::exp('foo'), Expression::exp('bar')]), function () { return Expression\Expr::any([Expression::exp('foo'), Expression::exp('bar')]); }], 'all with single expression' => [Expression::exp('foo'), function () { return Expression\Expr::all([Expression::exp('foo')]); }], 'any with single expression' => [Expression::exp('foo'), function () { return Expression\Expr::any([Expression::exp('foo')]); }], 'not' => [Expression::exp('not', [Expression::exp('foo')]), function () { return Expression\Expr::not(Expression::exp('foo')); }], 'eq' => [Expression::exp('eq', [Expression::exp('foo'), Expression::value('bar')]), function () { return Expression\Expr::eq(Expression::exp('foo'), Expression::value('bar')); }], 'neq' => [Expression::exp('neq', [Expression::exp('foo'), Expression::value('bar')]), function () { return Expression\Expr::neq(Expression::exp('foo'), Expression::value('bar')); }], 'gt' => [Expression::exp('gt', [Expression::exp('foo'), Expression::value('bar')]), function () { return Expression\Expr::gt(Expression::exp('foo'), Expression::value('bar')); }], 'ge' => [Expression::exp('ge', [Expression::exp('foo'), Expression::value('bar')]), function () { return Expression\Expr::ge(Expression::exp('foo'), Expression::value('bar')); }], 'lt' => [Expression::exp('lt', [Expression::exp('foo'), Expression::value('bar')]), function () { return Expression\Expr::lt(Expression::exp('foo'), Expression::value('bar')); }], 'le' => [Expression::exp('le', [Expression::exp('foo'), Expression::value('bar')]), function () { return Expression\Expr::le(Expression::exp('foo'), Expression::value('bar')); }], 'in' => [Expression::exp('in', [Expression::exp('foo'), Expression::value('bar')]), function () { return Expression\Expr::in(Expression::exp('foo'), Expression::value('bar')); }], 'not_in' => [Expression::exp('not_in', [Expression::exp('foo'), Expression::value('bar')]), function () { return Expression\Expr::notIn(Expression::exp('foo'), Expression::value('bar')); }], 'is_null' => [Expression::exp('is_null', [Expression::exp('foo')]), function () { return Expression\Expr::isNull(Expression::exp('foo')); }], 'is_not_null' => [Expression::exp('is_not_null', [Expression::exp('foo')]), function () { return Expression\Expr::isNotNull(Expression::exp('foo')); }], 'is_empty' => [Expression::exp('is_empty', [Expression::exp('foo')]), function () { return Expression\Expr::isEmpty(Expression::exp('foo')); }], 'is_not_empty' => [Expression::exp('is_not_empty', [Expression::exp('foo')]), function () { return Expression\Expr::isNotEmpty(Expression::exp('foo')); }]]; }
/** * Builds "All" expression. * * @param Expression[] $expressions * * @return Expression */ public static function all(array $expressions) { return Expr::all($expressions); }
/** * {@inheritdoc} */ public function __invoke(SQLTransformer $transformer, Expression $expression, Configuration $config) { return $transformer->transform(Expression\Expr::all([Expression\Expr::isNotNull($expression->getArg(0)), Expression\Expr::neq($expression->getArg(0), Expression\Expr::value(''))]), $config); }
public function testPairs() { $exp = Where::pairs(['foo' => 'bar', 'baz' => 'qux']); $this->assertEquals(Expr::all([Expr::eq(Expr::field('foo'), Expr::value('bar')), Expr::eq(Expr::field('baz'), Expr::value('qux'))]), $exp); }
/** * @param Expression|float|int $low * @param Expression|float|int $high * @param bool $includeLow * @param bool $includeHigh * * @return Expression */ public function notBetween($low, $high, $includeLow = false, $includeHigh = false) { return Expr::all([$includeLow ? $this->lessOrEquals($low) : $this->lessThan($low), $includeHigh ? $this->greaterOrEquals($high) : $this->greaterThan($high)]); }