Edit

Expression Builder

The Expression Builder is a convenient fluent interface for building expressions to be used with the Doctrine\Common\Collections\Criteria class:

$expressionBuilder = Criteria::expr();

$criteria = new Criteria();
$criteria->where($expressionBuilder->eq('name', 'jwage'));
$criteria->orWhere($expressionBuilder->eq('name', 'romanb'));

$collection->matching($criteria);

The ExpressionBuilder has the following API:

andX

$expressionBuilder = Criteria::expr();

$expression = $expressionBuilder->andX(
    $expressionBuilder->eq('foo', 1),
    $expressionBuilder->eq('bar', 1)
);

$collection->matching(new Criteria($expression));

orX

$expressionBuilder = Criteria::expr();

$expression = $expressionBuilder->orX(
    $expressionBuilder->eq('foo', 1),
    $expressionBuilder->eq('bar', 1)
);

$collection->matching(new Criteria($expression));

eq

$expressionBuilder = Criteria::expr();

$expression = $expressionBuilder->eq('foo', 1);

$collection->matching(new Criteria($expression));

gt

$expressionBuilder = Criteria::expr();

$expression = $expressionBuilder->gt('foo', 1);

$collection->matching(new Criteria($expression));

lt

$expressionBuilder = Criteria::expr();

$expression = $expressionBuilder->lt('foo', 1);

$collection->matching(new Criteria($expression));

gte

$expressionBuilder = Criteria::expr();

$expression = $expressionBuilder->gte('foo', 1);

$collection->matching(new Criteria($expression));

lte

$expressionBuilder = Criteria::expr();

$expression = $expressionBuilder->lte('foo', 1);

$collection->matching(new Criteria($expression));

neq

$expressionBuilder = Criteria::expr();

$expression = $expressionBuilder->neq('foo', 1);

$collection->matching(new Criteria($expression));

isNull

$expressionBuilder = Criteria::expr();

$expression = $expressionBuilder->isNull('foo');

$collection->matching(new Criteria($expression));

in

$expressionBuilder = Criteria::expr();

$expression = $expressionBuilder->in('foo', ['value1', 'value2']);

$collection->matching(new Criteria($expression));

notIn

$expressionBuilder = Criteria::expr();

$expression = $expressionBuilder->notIn('foo', ['value1', 'value2']);

$collection->matching(new Criteria($expression));

contains

$expressionBuilder = Criteria::expr();

$expression = $expressionBuilder->contains('foo', 'value1');

$collection->matching(new Criteria($expression));

memberOf

$expressionBuilder = Criteria::expr();

$expression = $expressionBuilder->memberOf('foo', ['value1', 'value2']);

$collection->matching(new Criteria($expression));

startsWith

$expressionBuilder = Criteria::expr();

$expression = $expressionBuilder->startsWith('foo', 'hello');

$collection->matching(new Criteria($expression));

endsWith

$expressionBuilder = Criteria::expr();

$expression = $expressionBuilder->endsWith('foo', 'world');

$collection->matching(new Criteria($expression));