Пример #1
0
 protected static function getRefRelatedBySuffix(ForeignKey $fk)
 {
     $relCol = '';
     foreach ($fk->getLocalForeignMapping() as $localColumnName => $foreignColumnName) {
         $localTable = $fk->getTable();
         $localColumn = $localTable->getColumn($localColumnName);
         if (!$localColumn) {
             throw new RuntimeException(sprintf('Could not fetch column: %s in table %s.', $localColumnName, $localTable->getName()));
         }
         $foreignKeysToForeignTable = $localTable->getForeignKeysReferencingTable($fk->getForeignTableName());
         if ($fk->getForeignTableName() == $fk->getTableName()) {
             // self referential foreign key
             $relCol .= $fk->getForeignTable()->getColumn($foreignColumnName)->getPhpName();
             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;
 }