prefix = Env::$db_prefix; } function getMetadataFor($class_name) { $class_metadata = parent::getMetadataFor($class_name); if (isset($this->prefixed_map[$class_metadata->getName()])) { return $class_metadata; } // prefix tables only after they are saved to cache so the prefix does not get included in cache // (getMetadataFor can call itself recursively but it saves to cache only after the recursive calls) $is_cached = $this->getCacheDriver()->contains($class_metadata->getName() . $this->cacheSalt); if ($class_metadata instanceof ClassMetadata && $is_cached) { $this->addPrefix($class_metadata); $this->prefixed_map[$class_metadata->getName()] = true; } return $class_metadata; } function addPrefix(ClassMetadata $class_metadata) { if (!$class_metadata->isInheritanceTypeSingleTable() || $class_metadata->getName() === $class_metadata->rootEntityName) { $class_metadata->setPrimaryTable([ 'name' => $this->prefix . $class_metadata->getTableName(), ]); } foreach ($class_metadata->getAssociationMappings() as $field_name => $mapping) { if ($mapping['type'] === ClassMetadataInfo::MANY_TO_MANY && $mapping['isOwningSide']) { $mapped_table_name = $mapping['joinTable']['name']; $class_metadata->associationMappings[$field_name]['joinTable']['name'] = $this->prefix . $mapped_table_name; } } } }