cli-config.php 3.5 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125
  1. <?php
  2. /* For licensing terms, see /license.txt */
  3. $config = new \Doctrine\ORM\Configuration();
  4. $config->setMetadataCacheImpl(new \Doctrine\Common\Cache\ArrayCache);
  5. use Doctrine\Common\Annotations\AnnotationReader;
  6. use Doctrine\Common\Annotations\AnnotationRegistry;
  7. use Symfony\Component\Yaml\Parser;
  8. $sysPath = __DIR__."/../../";
  9. AnnotationRegistry::registerFile($sysPath."vendor/doctrine/orm/lib/Doctrine/ORM/Mapping/Driver/DoctrineAnnotations.php");
  10. $reader = new AnnotationReader();
  11. $driverImpl = new \Doctrine\ORM\Mapping\Driver\AnnotationDriver(
  12. $reader,
  13. array($sysPath."tests/doctrine_console/mapping")
  14. );
  15. $config->setMetadataDriverImpl($driverImpl);
  16. $config->setProxyDir(__DIR__ . '/Proxies');
  17. $config->setProxyNamespace('Proxies');
  18. $defaultConnection = array(
  19. 'driver' => 'pdo_mysql',
  20. 'dbname' => 'chamilo',
  21. 'user' => 'root',
  22. 'password' => 'root',
  23. 'host' => 'localhost',
  24. );
  25. $em = \Doctrine\ORM\EntityManager::create($defaultConnection, $config);
  26. //Fixes some errors
  27. $platform = $em->getConnection()->getDatabasePlatform();
  28. $platform->registerDoctrineTypeMapping('enum', 'string');
  29. $platform->registerDoctrineTypeMapping('set', 'string');
  30. \Doctrine\DBAL\Types\Type::addType('json', 'Sonata\Doctrine\Types\JsonType');
  31. $helpers = array(
  32. 'db' => new \Doctrine\DBAL\Tools\Console\Helper\ConnectionHelper($em->getConnection()),
  33. 'em' => new \Doctrine\ORM\Tools\Console\Helper\EntityManagerHelper($em),
  34. 'configuration' => new \Chash\Helpers\ConfigurationHelper()
  35. );
  36. $em = \Doctrine\ORM\EntityManager::create($defaultConnection, $config);
  37. use Doctrine\ORM\Tools\Console\ConsoleRunner;
  38. return ConsoleRunner::createHelperSet($em);
  39. /*
  40. To generate doctrine2 entities you must:
  41. cd /var/www/chamilo/tests/doctrine_console
  42. Delete old mappings/entities
  43. sudo rm -R mapping generated repository
  44. Creating the mapping from the DB
  45. sudo mkdir mapping generated repository
  46. You can add a Namespace if you want to with: --namespace "Entity"
  47. sudo php5 doctrine.php orm:convert-mapping --force --from-database --namespace "Entity" annotation mapping
  48. with no namespace
  49. sudo php5 doctrine.php orm:convert-mapping --force --from-database annotation mapping
  50. 1. Generate entities
  51. sudo rm -R /var/www/chamilogits/tests/doctrine_console/mapping/Class.php
  52. sudo php5 doctrine.php orm:generate-entities --generate-annotations="true" generated
  53. Validate schema
  54. sudo php5 doctrine.php orm:validate-schema -v
  55. Move generated files in a chamilo folder:
  56. sudo rm -R main/inc/Entity/*
  57. mkdir main/inc/Entity
  58. cp -R tests/doctrine_console/generated/* main/inc/Entity
  59. fixes \ORM bug see http://redgreenrefactor.blogsite.org/php/code-first-approaching-php-with-doctrine-2-2-1-and-composer/
  60. cd main/inc/Entity
  61. sed -i 's/@ORM\\/@/g' *.php
  62. For tests
  63. php5 tests/doctrine_console/doctrine.php orm:generate-entities --generate-annotations="true" main/inc/Entity
  64. Then autoload classes with composer
  65. sudo php5 composer.phar update or sudo composer.phar update
  66. 2. Migrations
  67. a. Generate empty migration file
  68. cd /var/www/chamilo11/tests/doctrine_console
  69. php5 doctrine.php migrations:generate
  70. b. Check status
  71. php5 doctrine.php migrations:status
  72. c. Check sql
  73. php5 doctrine.php migrations:migrate --dry-run
  74. d. execute migration
  75. php5 doctrine.php migrations:migrate
  76. e. Revert migrations
  77. php5 doctrine.php migrations:migrate 0
  78. http://docs.doctrine-project.org/projects/doctrine-migrations/en/latest/reference/managing_migrations.html
  79. sudo php5 doctrine.php orm:generate-proxies
  80. */