Запуск Doctrine 2 CLI Tools Задачи из скрипта, запускаемого из браузера - PullRequest
3 голосов
/ 24 мая 2011

Немного справочной информации: я работаю над интеграцией Doctrine в приложение CodeIgniter. У меня это работает, но я хотел бы иметь возможность запускать задачи командной строки Doctrine из браузера, то есть не из сценария командной строки.

Причина, по которой я этого хочу, заключается в том, что я буду запускать Doctrine и CodeIgniter в пакете общего хостинга, где у меня не будет доступа к командной строке.

Это кажется очень простой функцией, но не всегда доступно в Doctrine 2.

Мои последние усилия будут направлены на инструмент командной строки и выяснение того, как выполняются задачи, а затем дублирование этого кода в контроллере CodeIgniter.

Если есть более простой способ сделать это, пожалуйста, дайте мне знать.

Спасибо!

Неотвеченный дубликат опубликован некоторое время назад.

Ответы [ 2 ]

1 голос
/ 25 сентября 2011

Для следующих

$doctrine = \Zend_Registry::get('doctrine');
$em = $doctrine->getEntityManager();
$tool = new \Doctrine\ORM\Tools\SchemaTool($em);

Получить SQL для обновления текущей схемы:

$sqlArray = $tool->getUpdateSchemaSql($em->getMetadataFactory()->getAllMetadata());

Обновить схему текущими метаданными

$res = $tool->updateSchema($em->getMetadataFactory()->getAllMetadata());

Создать схему.

$res = $tool->createSchema($em->getMetadataFactory()->getAllMetadata());

Это относится к сценарию установки. Просто создайте и проверьте соединение БД

$conn = $doctrine->getConnection();
$sql = "SELECT * FROM users";
try {
    $stmt = $conn->query($sql); // Simple (too simple?)
    die('Already installed');
} catch (Exception $e) {
    // Table not found, continue
}

Затем создайте свою схему.

0 голосов
/ 25 мая 2011

Вы, вероятно, не хотите запускать инструменты командной строки без командной строки.

Однако вы можете сделать это самостоятельно в сценариях довольно просто.Например, если вы хотите сделать то, что делает orm: schema-tool: *, вы бы начали здесь

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...