예제 #1
0
 /**
  * @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);
     }
 }
예제 #2
0
 /**
  * @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;
         }
     }
 }
예제 #3
0
파일: Record.php 프로젝트: sigma-z/dive
 /**
  * @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);
 }