2016-02-14 92 views
0

我想在一个学说迁移类来创建一个相当复杂的触发:触发教义迁移

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 

这甚至有可能管理在学说迁移吗?有没有一种解决方法/最佳做法来做到这一点?

回答

2

addSql在Doctrine的AbstractMigration需要一个SQL命令或多个SQL命令的数组。你发送的是一个包含多个SQL命令的字符串,这是不允许的。你可以试试这个:

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

这应该将字符串转换成一个数组,其中每个元素是一个SQL命令。但评论可能会有问题。