コード例 #1
0
ファイル: ToOneReferenceMap.php プロジェクト: sigma-z/dive
 /**
  * Updates references between owner and referenced record collection
  *
  * @param RecordCollection|Record[] $ownerCollection
  * @param RecordCollection|Record[] $referencedCollection
  */
 public function updateOwnerCollectionWithReferencedCollection(RecordCollection $ownerCollection, RecordCollection $referencedCollection)
 {
     $owningField = $this->relation->getOwningField();
     $isOneToMany = $this->relation->isOneToMany();
     foreach ($ownerCollection as $refRecord) {
         $refId = $refRecord->get($owningField);
         $owningId = $refRecord->getInternalId();
         $this->assignReference($refId, $owningId);
     }
     foreach ($referencedCollection as $refRecord) {
         $id = $refRecord->getInternalId();
         if (!$this->isReferenced($id) && !$this->hasNullReference($id)) {
             $reference = $isOneToMany ? array() : null;
             $this->setReference($id, $reference);
         }
     }
 }
コード例 #2
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);
 }
コード例 #3
0
ファイル: RecordGenerator.php プロジェクト: sigma-z/dive
 /**
  * Saves records related for referenced relation
  *
  * @param Relation      $relation
  * @param array|string  $relatedRows
  * @param string        $id
  */
 private function saveRecordsOnOwningRelation(Relation $relation, $relatedRows, $id)
 {
     $owningTable = $relation->getOwningTable();
     $owningField = $relation->getOwningField();
     if ($relation->isOneToMany()) {
         foreach ($relatedRows as $relatedKey => $relatedRow) {
             $this->saveRecordOnOwningRelation($relatedRow, $owningTable, $owningField, $id, $relatedKey);
         }
     } else {
         $this->saveRecordOnOwningRelation($relatedRows, $owningTable, $owningField, $id);
     }
 }