/** * Get the Entity Manager, creating it if necessary * * @return \Doctrine\ORM\EntityManager */ public function getEntityManager() { if (is_null($this->entityManager)) { $this->entityManager = EntityManagerFactory::createEntityManager(); } return $this->entityManager; }
public function test_it_processes_the_filters() { $entityManager = EntityManagerFactory::createEntityManager(); $qb = $entityManager->createQueryBuilder(); $qb->select('e')->from('App\\Entities\\Entity', 'e'); $filters = new Filters(['id' => '123', 'name' => 'Eduardo', 'size' => '10x10', 'dates' => '01/01/2016-02/02/2020']); $result = $this->filterManager->process($qb, $filters)->getQuery(); $expectedDQL = "SELECT e FROM App\\Entities\\Entity e WHERE e.id = ?1 AND e.name LIKE ?2 AND CONCAT(e.width, 'x', e.height) LIKE ?3 AND (e.runDate BETWEEN ?4 AND ?5)"; $this->assertEquals($expectedDQL, $result->getDql()); $paramArray = $result->getParameters()->map(function ($parameter) { $value = $parameter->getValue(); return $value instanceof \DateTime ? $value->format('Y-m-d H:i:s') : $value; })->toArray(); $expectedParmArray = ['123', '%Eduardo%', '%10x10%', '2016-01-01 00:00:00', '2020-02-02 23:59:59']; $this->assertEquals($expectedParmArray, $paramArray); }