2009-11-05 50 views
1

到目前爲止,我正在瀏覽doctrine的教程並喜歡它,但是我堅持刪除/重新生成db模式。PHP Doctrine ORM新手 - 用於刪除數據庫的有效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' 

誰能告訴我正確的語法使用的DSN,給出的例子是有點混亂。

我在本地主機上通過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

原則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我,如果我的地方

犯了一個錯誤