Storm\Drivers\Base\Relational\Traits\ForeignKey::__construct PHP Method

__construct() public method

public __construct ( $Name, Map $ReferencedColumnMap, $UpdateMode = ForeignKeyMode::NoAction, $DeleteMode = ForeignKeyMode::NoAction )
$ReferencedColumnMap Storm\Core\Containers\Map
    public function __construct($Name, Map $ReferencedColumnMap, $UpdateMode = ForeignKeyMode::NoAction, $DeleteMode = ForeignKeyMode::NoAction)
    {
        $this->Name = $Name;
        $this->ReferencedColumnMap = $ReferencedColumnMap;
        foreach ($ReferencedColumnMap as $ParentColumn) {
            $ReferencedColumn = $ReferencedColumnMap[$ParentColumn];
            if ($this->ParentTable === null && $this->ReferencedTable === null) {
                $this->ParentTable = $ParentColumn->GetTable();
                $this->ReferencedTable = $ReferencedColumn->GetTable();
            } else {
                if (!$this->ParentTable->Is($ParentColumn->GetTable())) {
                    throw new Relational\InvalidColumnException('The supplied parent columns must belong to the same table: %s and %s given', $this->ParentTable->GetName(), $ParentColumn->GetTable()->GetName());
                }
                if (!$this->ReferencedTable->Is($ReferencedColumn->GetTable())) {
                    throw new Relational\InvalidColumnException('The supplied referenced columns must belong to the same table: %s and %s given', $this->ReferencedTable->GetName(), $ReferencedColumn->GetTable()->GetName());
                }
            }
            $ParentIdentifier = $ParentColumn->GetIdentifier();
            $ReferencedIdentifier = $ReferencedColumn->GetIdentifier();
            $this->ParentColumnIdentifierMap[$ParentIdentifier] = $ParentColumn;
            $this->ReferencedColumnIdentifierMap[$ReferencedIdentifier] = $ReferencedColumn;
            $this->ParentReferencedColumnNameMap[$ParentColumn->GetName()] = $ReferencedColumn->GetName();
            $this->ParentReferencedColumnIdentifierMap[$ParentIdentifier] = $ReferencedIdentifier;
            $this->ReferencedParentColumnIdentifierMap[$ReferencedIdentifier] = $ParentIdentifier;
        }
        $this->UpdateMode = $UpdateMode;
        $this->DeleteMode = $DeleteMode;
    }