예제 #1
0
 /**
  * @return array
  */
 private function getData()
 {
     $columns = $this->prefixColumnsForFetch(array_keys($this->classMetadata->getProperties()));
     switch ($this->joinParameters['relation']) {
         case ClassMetadata::JOIN_ONE_TO_MANY:
             $where = sprintf("a.%s = %%s", $this->joinParameters['join']['referenceColumn']);
             return $this->manager->getDibiConnection()->select($columns)->from($this->classMetadata->getTable())->as('a')->where($where, DataHelperLoader::getPropertyValue($this->parent, $this->joinParameters['join']['column']))->fetchAll();
             break;
         case ClassMetadata::JOIN_MANY_TO_MANY:
             $targetClassMetadata = $this->manager->createClassMetadata($this->joinParameters['entity']);
             return $this->manager->getDibiConnection()->select($columns)->from($targetClassMetadata->getTable())->as('a')->innerJoin($this->joinParameters['joiningTable'])->as('b')->on(sprintf('a.%s = b.%s', $this->joinParameters['joinSecondary']['referenceColumn'], $this->joinParameters['joinSecondary']['column']))->and('b.' . $this->joinParameters['joinPrimary']['referenceColumn'] . ' = %s', DataHelperLoader::getPropertyValue($this->parent, $this->joinParameters['joinPrimary']['column']))->fetchAll();
             break;
         default:
             throw new \InvalidArgumentException(sprintf('Invalid join specified %s', $this->joinParameters['relation']));
     }
 }