2009-11-05 4 views
1

Я просматриваю учебники для доктрины и люблю его до сих пор, однако я застрял в точке сброса/регенерации схемы db.PHP Doctrine ORM newbie - Действительный DSN для удаления базы данных?

Это код, я использую (в значительной степени прямо из учебника)

require_once(dirname(__FILE__) . '/lib/vendor/doctrine/Doctrine.php'); 
spl_autoload_register(array('Doctrine', 'autoload')); 
$manager = Doctrine_Manager::getInstance(); 


$manager->setAttribute(Doctrine::ATTR_AUTO_ACCESSOR_OVERRIDE, true); 
$manager->setAttribute(Doctrine::ATTR_AUTOLOAD_TABLE_CLASSES, true); 
$dsn = 'mysql:dbname=test;host=127.0.0.1'; 
$user = 'root'; 
$password = 'test'; 

$dbh = new PDO($dsn, $user, $password); 
$conn = Doctrine_Manager::connection($dbh); 

$conn->setOption('username', $user); 
$conn->setOption('password', $password); 

Doctrine::loadModels('models'); 



Fatal error: Uncaught exception 'Doctrine_Connection_Exception' with message 
'You must create your Doctrine_Connection by using a valid Doctrine style dsn in order 
to use the create/drop database functionality' 

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

Я бегу на локальном хосте через XAMPP.

Любые советы, оцененные.

Спасибо.

ответ

1

Этот dns будет работать, не говоря уже о том, что он может быть более читаемым. Это метод «Lazy connection».

// At this point no actual connection to the database is created 
$conn = Doctrine_Manager::connection('mysql://username:[email protected]/test'); 

// The first time the connection is needed, it is instantiated 
// This query triggers the connection to be created 
$conn->execute('SHOW TABLES'); 

Если вы хотите использовать обработчик PDO ниже, а затем вызвать его как:

$pdo_handler = $conn->getPdh(); 
0

Doctrine 2:

$params = array(
    'driver' => 'pdo_mysql', 
    'host' => '127.0.0.1', 
    'port' => null, 
    'dbname' => 'test', 
    'user' => 'root', 
    'password' => 'test', 
); 

$conn = DriverManager::getConnection($params); 

// Drop 
try { 
    $conn->getSchemaManager()->dropDatabase($name); 
} catch (\Exception $e) { 
    // Could not drop database 
} 

Сorrect меня, если я сделал ошибку где-то

Смежные вопросы