пятница, 10 октября 2008 г.

Constrains и загрузка данных

Когда я достаточно усложнил fixtures для тестирования, то при загрузке fixtures:

$data = new sfPropelData();
$data->loadData(sfConfig::get('sf_test_dir').'/fixtures/');

появилась ошибка c constrains - Propel не мог просто так очистить БД.

Нашел выход в небольшом дописывании класса sfPropelData - создаем myPropelData.class.php и кладем его в lib'ы:


class myPropelData extends sfPropelData
{
public function loadData($directoryOrFile = null, $connectionName = 'propel')
{
$con = Propel::getConnection($connectionName);
$query = 'SET FOREIGN_KEY_CHECKS = 0;';
$statement = $con->prepareStatement($query)->executeQuery();

parent::loadData($directoryOrFile, $connectionName);

$query = 'SET FOREIGN_KEY_CHECKS = 1;';
$statement = $con->prepareStatement($query)->executeQuery();
}
}


и далее в тестах используем

$data = new myPropelData();
$data->loadData(sfConfig::get('sf_test_dir').'/fixtures/');

Комментариев нет: