Триггер в Доктрине Миграции
Я пытаюсь создать довольно сложный триггер в классе миграции доктрин:
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. Комментарии могут быть проблемой, хотя.