public final function AddRelationToRequest(Relational\Request $Request, array $ParentRows = null) { $Request->AddTable($this->Table); $this->AddConstraintToRequest($Request); if ($ParentRows !== null && count($ParentRows) > 0) { $this->AddParentPredicateToRequest($Request, $ParentRows); } }
public function AddParentPredicateToRequest(Relational\Request $Request, array $ParentRows) { $ParentTable = $this->GetParentTable(); if ($ParentTable) { $Request->AddTable($ParentTable); } $Request->AddColumns($this->GetReferencedColumns()); $MatchExpressions = []; foreach ($ParentRows as $ParentRow) { $ReferencedKey = $this->MapParentRowToRelatedKey($this->ForeignKey, $ParentRow); $MatchExpressions[] = new Expressions\MatchesColumnDataExpression($ReferencedKey); } $Request->GetCriterion()->AddPredicateExpression(Expressions\Expression::CompoundBoolean($MatchExpressions, Expressions\Operators\Binary::LogicalOr)); }
public function AddConstraintToRequest(Relational\Request $Request) { $Request->AddTable($this->JoinTable); parent::AddConstraintToRequest($Request); }