Триггер в Доктрине Миграции

Я пытаюсь создать довольно сложный триггер в классе миграции доктрин:

https://github.com/2ndQuadrant/audit-trigger/blob/master/audit.sql

Первым побуждением было просто поместить весь код триггера в один большой двоичный объект и добавить его

с:

public function up(Schema $schema)
{
    $this->addSql($triggerSqlInABigBlob);
}

Однако миграция не удалась

SQLSTATE[42601]: Syntax error: 7 ERROR:  cannot insert multiple commands into a prepared statement

Возможно ли вообще управлять в доктрине миграции? Есть ли обходной путь / лучшая практика для этого?

1 ответ

Решение

addSql в учении AbstractMigration ожидает одну команду SQL или массив из нескольких команд SQL. Вы отправляете строку, содержащую несколько команд SQL, что недопустимо. Вы можете попробовать это:

public function up(Schema $schema)
{
    $this->addSql(explode(';',$triggerSqlInABigBlob));
}

Это должно преобразовать строку в массив, где каждый элемент является одной командой SQL. Комментарии могут быть проблемой, хотя.

Другие вопросы по тегам