public function testJoinAssociationCondition()
 {
     $condition = new JoinAssociationCondition('test', 'id', [], '', []);
     $condition->setEntityClass('testClass');
     $condition->setJoinConditions([1]);
     $this->assertEquals('testClass', $condition->getEntityClass());
     $this->assertEquals([1], $condition->getJoinConditions());
 }
Пример #2
0
 /**
  * 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;
 }