如何在 Doctrine 迁移中从数据数组中插入多行?

How to insert multiple rows from a data array in a Doctrine migration?

我已经创建了一个实体并生成了迁移文件。现在,我想在进行迁移时将一些数据插入 MySQL 数据库中的 table。

我的up函数如下

public function up(Schema $schema) : void
{
  $data = array(
    'My Data 1',
    'My Data 2',
    'My Data 3',
  );

  $this->abortIf($this->connection->getDatabasePlatform()->getName() !== 'mysql', 'Migration can only be executed safely on \'mysql\'.');

  $this->addSql('CREATE TABLE my_table (id INT AUTO_INCREMENT NOT NULL, name VARCHAR(100) NOT NULL, PRIMARY KEY(id)) DEFAULT CHARACTER SET utf8mb4 COLLATE `utf8mb4_unicode_ci` ENGINE = InnoDB');

  $this->addSql('INSERT INTO my_table (name) VALUES (?)', $data, \PDO::PARAM_STR);
}

我想将 $data 数组中的所有数据添加到 my_data table。 $data 数组中的所有元素都是字符串。

当我运行php bin/console doctrine:migrations:migrate时,报如下错误。

Argument 3 passed to Doctrine\Migrations\AbstractMigration::addSql() must be of the type array, int given...

如何修复这个错误并实现我想要的?

我设法实现了我想要的如下...这个答案的灵感来自@El_Vanja对我的问题评论的资源。

public function up(Schema $schema) : void
{
  $data = array(
    'My Data 1',
    'My Data 2',
    'My Data 3',
  );

  $this->abortIf($this->connection->getDatabasePlatform()->getName() !== 'mysql', 'Migration can only be executed safely on \'mysql\'.');

  $this->addSql('CREATE TABLE my_table (id INT AUTO_INCREMENT NOT NULL, name VARCHAR(100) NOT NULL, PRIMARY KEY(id)) DEFAULT CHARACTER SET utf8mb4 COLLATE `utf8mb4_unicode_ci` ENGINE = InnoDB');

  foreach($data as $d) {
    $this->addSql('INSERT INTO my_table (name) VALUES (?)', array($d));
  }
}