public function testJoinAssociationCondition() { $condition = new JoinAssociationCondition('test', 'id', [], '', []); $condition->setEntityClass('testClass'); $condition->setJoinConditions([1]); $this->assertEquals('testClass', $condition->getEntityClass()); $this->assertEquals([1], $condition->getJoinConditions()); }
/** * Generate Join condition for join wothout "on" statement * * @param Join $join * @param JoinAssociationCondition $condition * @return Join */ protected function getJoinFromJoinAssociationCondition(Join $join, JoinAssociationCondition $condition) { $joinAssociationPathExpression = $join->joinAssociationDeclaration->joinAssociationPathExpression; $leftExpression = new ArithmeticExpression(); $pathExpression = new PathExpression(self::EXPECTED_TYPE, $joinAssociationPathExpression->identificationVariable, $joinAssociationPathExpression->associationField); $pathExpression->type = PathExpression::TYPE_SINGLE_VALUED_ASSOCIATION; $leftExpression->simpleArithmeticExpression = $pathExpression; $conditionalFactors = []; $joinConditionsArray = is_array($condition->getJoinConditions()) ? $condition->getJoinConditions() : array($condition->getJoinConditions()); foreach ($joinConditionsArray as $joinCondition) { $rightExpression = new ArithmeticExpression(); $pathExpression = new PathExpression(self::EXPECTED_TYPE, $condition->getEntityAlias(), is_string($joinCondition) ? $joinCondition : $joinCondition['referencedColumnName']); $pathExpression->type = PathExpression::TYPE_STATE_FIELD; $rightExpression->simpleArithmeticExpression = $pathExpression; $factor = new ConditionalPrimary(); $factor->simpleConditionalExpression = new ComparisonExpression($leftExpression, '=', $rightExpression); $conditionalFactors[] = $factor; } $conditionalFactors[] = $this->getConditionalFactor($condition); $associationDeclaration = new RangeVariableDeclaration($condition->getEntityClass(), $condition->getEntityAlias()); $newJoin = new Join($join->joinType, $associationDeclaration); $newJoin->conditionalExpression = new ConditionalTerm($conditionalFactors); return $newJoin; }