テスト時のDoctrine::loadData

テストデータをロードする方法として、

<?php
Doctrine::loadData(sfConfig::get('sf_test_dir').'/fixtures');

と書いてるが、外部キーがRESTRICT型制約の場合は、削除ができないためエラーになる。


drop databaseして、create databaseして、create tableしてあげればいい。

<?php
Doctrine_Manager::connection()->dropDatabase();
Doctrine_Manager::connection()->createDatabase();
Doctrine_Core::createTablesFromModels(sfConfig::get('sf_lib_dir').'/model/doctrine');
Doctrine::loadData(sfConfig::get('sf_test_dir').'/fixtures');


drop databaseの時「だけ」、SET FOREIGN_KEY_CHECKS = 0をしてくれてるから。

<?php
    # plugins/sfDoctrinePlugin/lib/vendor/doctrine/Doctrine/Export/Mysql.php
    public function dropDatabaseSql($name)
    {
        return array(
            'SET FOREIGN_KEY_CHECKS = 0',
            'DROP DATABASE ' . $this->conn->quoteIdentifier($name),
            'SET FOREIGN_KEY_CHECKS = 1'
        );
    }