Doctrine ArrayCollection - Symftony/Xpression GitHub Wiki
Filter an ArrayCollection
/!\ ArrayCollection doesn't support not and not or xor contains not contains
These not supported operator was not allowed to use and the parser will throw UnsupportedTokenTypeException
use Doctrine\Common\Collections\ArrayCollection;
use Doctrine\Common\Collections\Criteria;
use Doctrine\Common\Collections\ExpressionBuilder;
use Symftony\Xpression\Bridge\Doctrine\Common\ExpressionBuilderAdapter;
use Symftony\Xpression\Parser;
QueryStringParser::correctServerQueryString();
$products = new ArrayCollection(
array(
array('id' => 1, 'title' => 'banana', 'price' => 2, 'quantity' => 5, 'category' => 'food'),
array('id' => 2, 'title' => 'banana', 'price' => 5, 'quantity' => 15, 'category' => 'food'),
array('id' => 3, 'title' => 'apple', 'price' => 1, 'quantity' => 1, 'category' => 'food'),
array('id' => 4, 'title' => 'TV', 'price' => 399, 'quantity' => 1, 'category' => 'multimedia'),
)
);
$parser = new Parser(new ExpressionBuilderAdapter(new ExpressionBuilder()));
$expression = $parser->parse($_GET['query']);
$filteredProducts = $products->matching(new Criteria($expression));