예제 #1
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);
 }
 /**
  * @param  Relation $relation
  * @param  string   $relationName
  * @return Record
  */
 private function getOwningRecord(Relation $relation, $relationName)
 {
     return $relation->isOwningSide($relationName) ? $this->relatedRecord : $this->storedRecord;
 }