Mar*_*ala 0 mysql doctrine symfony mysql-5.7
有实体用户和公司。公司有 user_id。
现在表结构发生变化,下一个用户可以代表许多公司,反之亦然(多对多,例如一对多 - 多对一)。这在中间引入了 CompanyRepresentative Entity,其中包含字段 user_id、company_id 和 role。公司 user_id 将随着该更改而被删除。
如何针对这种情况制作数据迁移脚本?当前存在的每个公司都必须有 CompanyRepresentative 条目,该条目连接当前已连接的同一用户和公司。
环境是带有 Doctrine 和 Mysql 的 symfony 4 应用程序。
教义迁移具有功能preUp
和postUp
。在 preUp 中,可以选择所有需要的数据,而在 postUp 中,可以在数据库结构更改后将这些数据插入到正确的位置。
例如
public function preUp(Schema $schema)
{
parent::preUp($schema);
$query = "SELECT id, user_id FROM company";
$data = $this->connection->prepare($query);
$data->execute();
foreach ($data as $row) {
$userId = $row['id'];
$companyId = $row['user_id'];
$this->customSQL[] = "($userId, $companyId)";
}
}
public function up(Schema $schema)
{
//Change the schema
}
public function postUp(Schema $schema)
{
parent::postUp($schema);
$SQL = 'INSERT INTO company_rep (user_id, company_id) VALUES ' . implode(', ', $this->customSQL);
$this->connection->executeQuery($SQL);
}
Run Code Online (Sandbox Code Playgroud)
归档时间: |
|
查看次数: |
3183 次 |
最近记录: |