/** * @param string $newIdentifier * @param string $oldIdentifier * @param Record $owningRecord */ public function updateOwningIdentifier($newIdentifier, $oldIdentifier, Record $owningRecord) { $relationName = $this->relation->getReferencedAlias(); if (!$this->relation->hasReferenceLoadedFor($owningRecord, $relationName)) { return; } $referencedRecord = $this->relation->getReferenceFor($owningRecord, $relationName); if ($referencedRecord) { $refId = $referencedRecord->getInternalId(); $this->updateReferenceInMap($refId, $newIdentifier, $oldIdentifier); } }
/** * @param string $newIdentifier * @param string $oldIdentifier * @param Record $owningRecord */ public function updateOwningIdentifier($newIdentifier, $oldIdentifier, Record $owningRecord) { $relationName = $this->relation->getReferencedAlias(); if (!$this->relation->hasReferenceLoadedFor($owningRecord, $relationName)) { return; } $referencedRecord = $this->relation->getReferenceFor($owningRecord, $relationName); if ($referencedRecord) { $refId = $referencedRecord->getInternalId(); if ($this->relation->isOneToMany()) { $pos = array_search($oldIdentifier, $this->references[$refId], true); if ($pos !== false) { $this->references[$refId][$pos] = $newIdentifier; } } else { $this->references[$refId] = $newIdentifier; } } }
/** * @param Relation $relation * @param string $relationName * @param bool $withMappedFields * @param array $visited * @return array|bool */ private function getReferenceAsArray(Relation $relation, $relationName, $withMappedFields, array &$visited) { if (!$relation->hasReferenceLoadedFor($this, $relationName)) { return false; } /** @var Record|Record[]|RecordCollection $related */ $related = $this->get($relationName); if ($relation->isOneToMany() && $relation->isOwningSide($relationName)) { $reference = array(); foreach ($related as $relatedRecord) { $reference[] = $relatedRecord->toArray(true, $withMappedFields, $visited); } return $reference; } return $related->toArray(true, $withMappedFields, $visited); }