Doctrine 1 迁移,如何执行原始 SQL

Doctrine 1 Migrations, How to execute raw SQL

我的迁移逻辑包括相当复杂的操作,例如将数据插入刚创建的表和创建存储过程。是否有任何方法 create/generate 使用 Doctrine 1 在 Symfony 1 上进行正确迁移? 我认为最快的方法是使用我需要的 RAW SQL 命令创建迁移。

你可以试试这个:

$connection = Doctrine_Manager::getInstance()->getCurrentConnection();
$results = $connection->execute(" -- YOUR RAW SQL -- ");

在这些情况下,我所做的是使用 symfony doctrine:generate-migration 命令创建一个空迁移 class,然后填写类似于此的 up()down() 方法:

public function up()
{
    $dbh = Doctrine_Manager::connection()->getDbh();
    $query = "INSERT INTO `some_table` (`id`, `created_at`, `updated_at`)
              VALUES 
              ('1', NOW(), NOW()), 
              ('2', NOW(), NOW()),
              ('3', NOW(), NOW());
    ";
    $stmt = $dbh->prepare($query);
    $stmt->execute();
}