* @copyright Since 2007 PrestaShop SA and Contributors * @license https://opensource.org/licenses/OSL-3.0 Open Software License (OSL 3.0) */ namespace PrestaShopBundle\Service\Database; use Doctrine\ORM\Mapping\UnderscoreNamingStrategy; /** * Naming strategy for Doctrine ORM to use prefixed database table names. */ class DoctrineNamingStrategy extends UnderscoreNamingStrategy { private $prefix; /** * Constructor. * * Prefix is given by injection, set in app/config/parameters.yml. * * @param string $prefix */ public function __construct($prefix = 'ps_') { parent::__construct(CASE_LOWER, true); $this->prefix = $prefix; } /** * {@inheritdoc} * * This override adds a prefix to the underscored table name. */ public function classToTableName($className) { $underscored = parent::classToTableName($className); return $this->prefix . $underscored; } /** * {@inheritdoc} * * This override adds a prefix to the underscored table name. */ public function joinTableName($sourceEntity, $targetEntity, $propertyName = null) { return $this->prefix . parent::classToTableName($sourceEntity) . '_' . parent::classToTableName($targetEntity); } }