在Doctrine迁移中使用自定义SQL时,防止"已执行迁移但未导致任何SQL语句"消息

crm*_*cco 3 php mysql doctrine symfony doctrine-orm

我正在我的Doctrine迁移中执行手动准备的语句.我正在这样做,因为我需要最后插入的ID来构建进一步的相关查询.使用标准addSql方法不允许这样做,因为它的性质是"排列"查询然后在最后执行它们.

有没有办法可以阻止显示以下错误信息?

Migration 20151102112832 was executed but did not result in any SQL statements.

执行了许多SQL语句,但是在调用我的方法时它们是执行的:

/**
 * @param string $sql
 *
 * @throws DBALException
 */
private function runSql($sql)
{
    $this->write($sql);
    $stmt = $this->connection->prepare($sql);
    $stmt->execute();
}
Run Code Online (Sandbox Code Playgroud)

Mar*_*rek 6

你可以创建一个"无所事事"的sql:

public function up(Schema $schema)
{
    $this->addSql('SELECT 1');
}
Run Code Online (Sandbox Code Playgroud)


小智 5

我认为这里最好的选择是展示您的迁移正在做什么。您可以通过发送带有注释字符串的 sql 请求来执行此操作并抑制警告消息。例如:

public function up(Schema $schema)
{
    // Do not show warning on migrations.
    $this->addSql('# Updating entities.');
}
Run Code Online (Sandbox Code Playgroud)