コード例 #1
0
 private function buildFromJoinsClause(Resource $resource)
 {
     $joinsClause = '';
     if ($resource->hasRelationships()) {
         $relationships = $resource->getRelationships();
         /** @var \FlyRRM\Mapping\Relationship $rel */
         foreach ($relationships as $rel) {
             if ($rel->getType() === Relationship::TYPE_MANY_TO_ONE) {
                 $referencedResource = $rel->getReferencedResource();
                 $mainResource = $rel->getMainResource();
                 $joinCondition = $mainResource->getResourceUniqueIdentifier() . '.' . $rel->getJoinColumn() . ' = ' . $referencedResource->getResourceUniqueIdentifier() . '.' . $referencedResource->getPrimaryKey();
                 $joinsClause .= ' left outer join ' . $referencedResource->getTable() . ' ' . $referencedResource->getResourceUniqueIdentifier() . ' on ' . $joinCondition . $this->buildFromJoinsClause($referencedResource);
             }
         }
     }
     return $joinsClause;
 }
コード例 #2
0
 private function hydrateResourceRelationships(Resource $resource, $row)
 {
     $rowRes = array();
     /** @var \FlyRRM\Mapping\Relationship $r */
     foreach ($resource->getRelationships() as $r) {
         $currentReferencedResource = $r->getReferencedResource();
         if ($r->getType() === Relationship::TYPE_MANY_TO_ONE) {
             $rowRes[$currentReferencedResource->getAlias()] = $this->hydrateResourceFields($currentReferencedResource, $row);
             if ($currentReferencedResource->hasRelationships()) {
                 $referencedsRes = $this->hydrateResourceRelationships($currentReferencedResource, $row);
                 foreach ($referencedsRes as $refResKey => $refResValue) {
                     $rowRes[$currentReferencedResource->getAlias()][$refResKey] = $refResValue;
                 }
             }
         }
         if ($r->getType() === Relationship::TYPE_ONE_TO_MANY) {
             $rowRes = array_merge($rowRes, $this->hydrateOneToManySubResource($currentReferencedResource, $row));
         }
     }
     return $rowRes;
 }