This repository has been archived on 2026-07-19. You can view files and clone it. You cannot open issues or pull requests or push a commit.
Files
espocrm-base/application/Espo/Core/Doctrine/Helper.php
T
2013-12-05 12:14:10 +02:00

101 lines
2.5 KiB
PHP

<?php
namespace Espo\Core\Doctrine;
class Helper
{
private $entityManager;
private $schemaTool;
private $disconnectedClassMetadataFactory;
private $entityGenerator;
public function __construct(\Doctrine\ORM\EntityManager $entityManager)
{
$this->entityManager = $entityManager;
$this->schemaTool = new \Doctrine\ORM\Tools\SchemaTool($this->getEntityManager());
$this->entityGenerator = new \Doctrine\ORM\Tools\EntityGenerator();
$this->disconnectedClassMetadataFactory = new \Doctrine\ORM\Tools\DisconnectedClassMetadataFactory();
$this->disconnectedClassMetadataFactory->setEntityManager($this->getEntityManager()); // $em is EntityManager instance
}
protected function getEntityManager()
{
return $this->entityManager;
}
protected function getSchemaTool()
{
return $this->schemaTool;
}
protected function getDisconnectedClassMetadataFactory()
{
return $this->disconnectedClassMetadataFactory;
}
protected function getEntityGenerator()
{
return $this->entityGenerator;
}
/**
* Rebuild a database accordinly to metadata
*
* @return bool
*/
public function rebuildDatabase()
{
$GLOBALS['log']->add('DEBUG', 'EspoConverter:rebuildDatabase() - start rebuild database');
$classes = $this->getDisconnectedClassMetadataFactory()->getAllMetadata();
$this->getSchemaTool()->updateSchema($classes);
$GLOBALS['log']->add('DEBUG', 'EspoConverter:rebuildDatabase() - end rebuild database');
return true; //always true, because updateSchema just returns the VOID
}
/**
* Rebuild a database accordinly to metadata
*
* @return bool
*/
public function generateEntities($classNames)
{
if (!is_array($classNames)) {
$classNames= (array) $classNames;
}
$metadata= array();
foreach($classNames as $className) {
$metadata[]= $this->getDisconnectedClassMetadataFactory()->getMetadataFor($className);
}
if (!empty($metadata)) {
$GLOBALS['log']->add('DEBUG', 'EspoConverter:generateEntities() - start generate Entities');
$this->getEntityGenerator()->setGenerateAnnotations(false);
$this->getEntityGenerator()->setGenerateStubMethods(true);
$this->getEntityGenerator()->setRegenerateEntityIfExists(false);
$this->getEntityGenerator()->setUpdateEntityIfExists(false);
$this->getEntityGenerator()->generate($metadata, 'application');
$GLOBALS['log']->add('DEBUG', 'EspoConverter:generateEntities() - end generate Entities');
return true; //always true, because generate just returns the VOID
}
return false;
}
}