如何在 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));
}
}
我已经创建了一个实体并生成了迁移文件。现在,我想在进行迁移时将一些数据插入 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));
}
}