Ejemplo n.º 1
0
 protected static function getRefRelatedBySuffix(ForeignKey $fk)
 {
     $relCol = '';
     foreach ($fk->getMapping() as $mapping) {
         list($localColumn, $foreignValueOrColumn) = $mapping;
         $localColumnName = $localColumn->getPhpName();
         $localTable = $fk->getTable();
         if (!$localColumn) {
             throw new RuntimeException(sprintf('Could not fetch column: %s in table %s.', $localColumnName, $localTable->getName()));
         }
         $foreignKeysToForeignTable = $localTable->getForeignKeysReferencingTable($fk->getForeignTableName());
         if ($foreignValueOrColumn instanceof Column && $fk->getForeignTableName() == $fk->getTableName()) {
             $foreignColumnName = $foreignValueOrColumn->getPhpName();
             // self referential foreign key
             $relCol .= $foreignColumnName;
             if (count($foreignKeysToForeignTable) > 1) {
                 // several self-referential foreign keys
                 $relCol .= array_search($fk, $foreignKeysToForeignTable);
             }
         } elseif (count($foreignKeysToForeignTable) > 1 || count($fk->getForeignTable()->getForeignKeysReferencingTable($fk->getTableName())) > 0) {
             // several foreign keys to the same table, or symmetrical foreign key in foreign table
             $relCol .= $localColumn->getPhpName();
         }
     }
     if (!empty($relCol)) {
         $relCol = 'RelatedBy' . $relCol;
     }
     return $relCol;
 }