/** * @author Franlin Rivero Grcia <*****@*****.**> * @param EntityManager $em * @param string $class * @param array $filters Arreglo asociativo campo => valor * @param array $foreignFilters Arreglo asociativo asociationName.campo => valor * @param ResultType $resultType * @param type $order * @param type $page * @return array */ public static function filterRecordsTableWithAsociations(EntityManager $em, $class, $filters = array(), $order = null, $resultType = ResultType::ObjectType, $page = null) { $meta = $em->getClassMetadata($class); //$fields = $meta->getFieldNames(); $asocnames = $meta->getAssociationNames(); $alias = UtilRepository2::createAlias($class); $qb = $em->createQueryBuilder()->select($alias)->from($class, $alias); $i = 0; foreach ($asocnames as $asocname) { $qb->addSelect($asocname); $join = UtilRepository2Config::$defaultJoinType; $qb->{$join}("{$alias}.{$asocname}", $asocname); } $fields = $meta->getFieldNames(); UtilRepository2::fieldFilter($alias, $filters, $fields, $asocnames, $meta, $qb); UtilRepository2::putOrder($alias, $fields, $order, $qb); // echo $qb->getQuery()->getSQL();die; return UtilRepository2::doResult($qb, $resultType, $alias); }