From 164bd801188245942ca996eda75d7a554f29746a Mon Sep 17 00:00:00 2001 From: Jeremy Date: Sat, 28 Mar 2015 11:29:19 +0100 Subject: Ability to prefix tables Will fix #799 --- .../Doctrine/Mapping/PrefixedNamingStrategy.php | 75 ++++++++++++++++++++++ 1 file changed, 75 insertions(+) create mode 100644 src/Wallabag/CoreBundle/Doctrine/Mapping/PrefixedNamingStrategy.php (limited to 'src/Wallabag/CoreBundle/Doctrine') diff --git a/src/Wallabag/CoreBundle/Doctrine/Mapping/PrefixedNamingStrategy.php b/src/Wallabag/CoreBundle/Doctrine/Mapping/PrefixedNamingStrategy.php new file mode 100644 index 00000000..861a60ea --- /dev/null +++ b/src/Wallabag/CoreBundle/Doctrine/Mapping/PrefixedNamingStrategy.php @@ -0,0 +1,75 @@ +prefix = (string) $prefix; + } + + /** + * {@inheritdoc} + */ + public function classToTableName($className) + { + return strtolower($this->prefix . substr($className, strrpos($className, '\\') + 1)); + } + + /** + * {@inheritdoc} + */ + public function propertyToColumnName($propertyName, $className = null) + { + return $propertyName; + } + + /** + * {@inheritdoc} + */ + public function referenceColumnName() + { + return 'id'; + } + + /** + * {@inheritdoc} + */ + public function joinColumnName($propertyName) + { + return $propertyName . '_' . $this->referenceColumnName(); + } + + /** + * {@inheritdoc} + */ + public function joinTableName($sourceEntity, $targetEntity, $propertyName = null) + { + // for join table we don't want to have both table concatenated AND prefixed + // we just want the whole table to prefixed once + // ie: not "wallabag_entry_wallabag_tag" but "wallabag_entry_tag" + $target = substr($targetEntity, strrpos($targetEntity, '\\') + 1); + + return strtolower($this->classToTableName($sourceEntity) . '_' .$target); + } + + /** + * {@inheritdoc} + */ + public function joinKeyColumnName($entityName, $referencedColumnName = null) + { + return strtolower($this->classToTableName($entityName) . '_' .($referencedColumnName ?: $this->referenceColumnName())); + } +} -- cgit v1.2.3