Все еще изо всех сил пытаюсь заставить доктрину работать должным образом в моей системе. У меня есть файл yaml, который описывает структуру моей базы данных и таблиц. (Я следую учебному пособию на Zendcast). У меня есть файл сценария доктрины как
#!/usr/bin/env php
<?php
chdir(dirname(__FILE__));
include('doctrine.php');
и файл doctrine.php содержит
<?php
// Define path to application directory
defined('APPLICATION_PATH')
|| define('APPLICATION_PATH', realpath(dirname(__FILE__) . '/..'));
// Define application environment
defined('APPLICATION_ENV')
|| define('APPLICATION_ENV', (getenv('APPLICATION_ENV') ? getenv('APPLICATION_ENV') : 'development'));
// Ensure library/ is on include_path
set_include_path(implode(PATH_SEPARATOR, array(
realpath(APPLICATION_PATH . '/../library'),
get_include_path(),
)));
/** Zend_Application */
require_once 'Zend/Application.php';
// Create application, bootstrap, and run
$application = new Zend_Application(
APPLICATION_ENV,
APPLICATION_PATH . '/configs/application.ini'
);
$application->getBootstrap()->bootstrap('doctrine');
$config = $application->getOption('doctrine');
$cli = new Doctrine_Cli($config);
$cli->run($_SERVER['argv']);
Моя выдержка из application.ini
autoloaderNamespaces[] = "Doctrine_"
;--
;Database
;--
doctrine.dsn = "mysql://root:softna@localhost/gepm2"
doctrine.data_fixtures_path = APPLICATION_PATH "/configs/data/fixtures"
doctrine.sql_path = APPLICATION_PATH "/configs/data/sql"
doctrine.migrations_path = APPLICATION_PATH "/configs/migrations"
doctrine.yaml_schema_path = APPLICATION_PATH "/configs/schema.yml"
doctrine.models_path = APPLICATION_PATH "/../library/Gepm/Model"
Когда я бегу:
D:\www\gepm2\application\scripts>php doctrine build-all-reload
Я получаю обратную связь:
D:\www\gepm2\application\scripts>php doctrine build-all-reload
build-all-reload - Are you sure you wish to drop your databases? (y/n) y
build-all-reload - Successfully dropped database for connection named 'doctrine'
build-all-reload - Successfully created database for connection named 'doctrine'
build-all-reload - Created tables successfully
build-all-reload - Data was successfully loaded
Однако, когда я проверяю mysql, создается только база данных, таблицы не создаются. Я боролся с этим целый день. Кто-нибудь, помогите.
EDIT
Хорошо, теперь все заработало. Но, честно говоря, единственные изменения, которые я внес в код, заключались в
1. установить часовой пояс,
2. удалите подчеркивание из конца значения utoloaderNamespaces [], чтобы utoloaderNamespaces [] = "Doctrine_" стало autoloaderNamespaces [] = "Doctrine" и
3. переместите объявления базы данных доктрины в конец раздела [production] application.ini
Я настолько отстал от графика, над которым работаю, что не могу связываться с этими изменениями, чтобы понять, какое из них и почему оно работает. Я скажу позже, когда у меня будет время простоя. В то же время более знающий выродок может объяснить, почему это сработало. веселит.