Storm\Core\Mapping\DomainDatabaseMap::MapPersistedRelationships PHP Method

MapPersistedRelationships() final public method

final public MapPersistedRelationships ( UnitOfWork $UnitOfWork, Transaction $Transaction, Storm\Core\Mapping\IEntityRelationalMap $EntityRelationalMap, array $ObjectPersistedRelationships ) : PersistedRelationship[]
$UnitOfWork Storm\Core\Object\UnitOfWork
$Transaction Storm\Core\Relational\Transaction
$EntityRelationalMap Storm\Core\Mapping\IEntityRelationalMap
$ObjectPersistedRelationships array
return Storm\Core\Relational\PersistedRelationship[]
    public final function MapPersistedRelationships(Object\UnitOfWork $UnitOfWork, Relational\Transaction $Transaction, IEntityRelationalMap $EntityRelationalMap, array $ObjectPersistedRelationships)
    {
        $ParentPrimaryKey = null;
        $ChildPersistenceData = [];
        foreach ($ObjectPersistedRelationships as $Key => $ObjectPersistedRelationship) {
            if ($ObjectPersistedRelationship === null) {
                continue;
            }
            if ($ParentPrimaryKey === null) {
                $ParentPrimaryKey = $EntityRelationalMap->MapIdentityToPrimaryKey($ObjectPersistedRelationship->GetParentIdentity());
            }
            if ($ObjectPersistedRelationship->IsIdentifying()) {
                $ChildPersistenceData[$Key] = $ObjectPersistedRelationship->GetChildPersistenceData();
            }
        }
        if (count($ChildPersistenceData) > 0) {
            $ChildResultRows = $this->MapPersistenceDataToTransaction($UnitOfWork, $Transaction, $ChildPersistenceData);
        }
        $RelationalPersistedRelationships = [];
        foreach ($ObjectPersistedRelationships as $Key => $ObjectPersistedRelationship) {
            if ($ObjectPersistedRelationship === null) {
                $RelationalPersistedRelationships[$Key] = null;
                continue;
            }
            if ($ObjectPersistedRelationship->IsIdentifying()) {
                $RelationalPersistedRelationships[$Key] = new Relational\PersistedRelationship($ParentPrimaryKey, null, $ChildResultRows[$Key]);
            } else {
                $RelatedIdentity = $ObjectPersistedRelationship->GetRelatedIdentity();
                $RelatedEntityRelationalMap = $this->EntityRelationMaps[$RelatedIdentity->GetEntityType()];
                $RelatedPrimaryKey = $RelatedEntityRelationalMap->MapIdentityToPrimaryKey($RelatedIdentity);
                $RelationalPersistedRelationships[$Key] = new Relational\PersistedRelationship($ParentPrimaryKey, $RelatedPrimaryKey, null);
            }
        }
        return $RelationalPersistedRelationships;
    }