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

MapReferencedToParentKey() final public method

final public MapReferencedToParentKey ( ColumnData $ReferencedKeyData, ColumnData $ParentKeyData )
$ReferencedKeyData Storm\Core\Relational\ColumnData
$ParentKeyData Storm\Core\Relational\ColumnData
    public final function MapReferencedToParentKey(Relational\ColumnData $ReferencedKeyData, Relational\ColumnData $ParentKeyData)
    {
        $ReferencedKeyData = array_intersect_key($ReferencedKeyData->GetData(), $this->ReferencedColumnIdentifierMap);
        array_walk($ReferencedKeyData, function ($Value, $Key) use(&$ParentKeyData) {
            $ParentKeyData[$this->ParentColumnIdentifierMap[$this->ReferencedParentColumnIdentifierMap[$Key]]] = $Value;
        });
    }

Usage Example

Ejemplo n.º 1
0
 public function Persist(Relational\Transaction $Transaction, Relational\ResultRow $ParentData, array $RelationshipChanges)
 {
     /* @var $RelationshipChanges Relational\RelationshipChange[] */
     $JoinRowsWithoutPrimaryKeys = [];
     foreach ($RelationshipChanges as $RelationshipChange) {
         if ($RelationshipChange->HasPersistedRelationship()) {
             $JoinRow = $this->MapPersistedRelationshipToJoinRow($RelationshipChange->GetPersistedRelationship());
             $Transaction->Persist($JoinRow);
             if (!$JoinRow->HasPrimaryKey()) {
                 $JoinRowsWithoutPrimaryKeys[] = $JoinRow;
             }
         }
         if ($RelationshipChange->HasDiscardedRelationship()) {
             $JoinRow = $this->MapDiscardedRelationshipToJoinRow($RelationshipChange->GetDiscardedRelationship());
             $Transaction->Discard($JoinRow->GetPrimaryKey());
         }
     }
     if (count($JoinRowsWithoutPrimaryKeys) > 0) {
         $ParentRow = $ParentData->GetRow($this->ParentForeignKey->GetReferencedTable());
         $Transaction->SubscribeToPrePersistEvent($this->JoinTable, function () use(&$ParentRow, &$JoinRowsWithoutPrimaryKeys) {
             foreach ($JoinRowsWithoutPrimaryKeys as $JoinRowWithoutPrimaryKey) {
                 $this->ParentForeignKey->MapReferencedToParentKey($ParentRow, $JoinRowWithoutPrimaryKey);
             }
         });
     }
 }
All Usage Examples Of Storm\Drivers\Base\Relational\Traits\ForeignKey::MapReferencedToParentKey