Gets the alias from a Join expression.
public static getJoinAlias ( Doctrine\ORM\Query\Expr\Join $join ) : string | ||
$join | Doctrine\ORM\Query\Expr\Join | |
리턴 | string |
public function testGetJoinAliasWithReflection() { $methodExist = $this->getFunctionMock('ApiPlatform\\Core\\Bridge\\Doctrine\\Orm\\Util', 'method_exists'); $methodExist->expects($this->any())->with(Join::class, 'getAlias')->willReturn('false'); $join = new Join('INNER_JOIN', 'relatedDummy', 'a_1', null, 'a_1.name = r.name'); $this->assertEquals('a_1', QueryJoinParser::getJoinAlias($join)); }
/** * Determines whether the query builder has ORDER BY on entity joined through * to-many association. * * @param QueryBuilder $queryBuilder * @param ManagerRegistry $managerRegistry * * @return bool */ public static function hasOrderByOnToManyJoin(QueryBuilder $queryBuilder, ManagerRegistry $managerRegistry) : bool { if (empty($orderByParts = $queryBuilder->getDQLPart('orderBy')) || empty($joinParts = $queryBuilder->getDQLPart('join'))) { return false; } $orderByAliases = []; foreach ($orderByParts as $orderBy) { $parts = QueryJoinParser::getOrderByParts($orderBy); foreach ($parts as $part) { if (false !== ($pos = strpos($part, '.'))) { $alias = substr($part, 0, $pos); $orderByAliases[$alias] = true; } } } if (!empty($orderByAliases)) { foreach ($joinParts as $joins) { foreach ($joins as $join) { $alias = QueryJoinParser::getJoinAlias($join); if (isset($orderByAliases[$alias])) { $relationship = QueryJoinParser::getJoinRelationship($join); list($parentAlias, $association) = explode('.', $relationship); $parentMetadata = QueryJoinParser::getClassMetadataFromJoinAlias($parentAlias, $queryBuilder, $managerRegistry); if ($parentMetadata->isCollectionValuedAssociation($association)) { return true; } } } } } return false; }