Php 使用条令更新模式而不删除每个表?
我正在为一个网站编写一个小型web应用程序,为此,我必须访问数据库中已有的一些表。我不会添加或更改任何内容 我还将创建一些我自己的新表,在那里我将写一些东西 现在问题是:Php 使用条令更新模式而不删除每个表?,php,mysql,doctrine-orm,Php,Mysql,Doctrine Orm,我正在为一个网站编写一个小型web应用程序,为此,我必须访问数据库中已有的一些表。我不会添加或更改任何内容 我还将创建一些我自己的新表,在那里我将写一些东西 现在问题是: 当我运行updateSchema时,它会删除数据库中我没有专门为其创建实体的每个表。那里大概有30张桌子,而我只需要2张!我根本不想碰其他人。它不应该删除它们 在这两个列中,我只需要3列“id”、“name”和“email”,但表中又有10列我根本不感兴趣,因此没有映射到我的实体对象。更新确实删除了我不匹配的每一列。再说一次
- 当我运行updateSchema时,它会删除数据库中我没有专门为其创建实体的每个表。那里大概有30张桌子,而我只需要2张!我根本不想碰其他人。它不应该删除它们
- 在这两个列中,我只需要3列“id”、“name”和“email”,但表中又有10列我根本不感兴趣,因此没有映射到我的实体对象。更新确实删除了我不匹配的每一列。再说一次,它不应该碰这些东西
<?php
require_once '../inc/config.inc.php';
$em= Inc\Config::getEm();
$schemaTool = new \Doctrine\ORM\Tools\SchemaTool($em);
$metadata = $em->getMetadataFactory()->getAllMetadata();
try {
$schemaTool->updateSchema($metadata);
} catch (PDOException $e) {
echo 'WARNING: There was a problem updating the database schema: ';
echo $e->getMessage() . '<br />';
if (preg_match("/Unknown database '(.*)'/", $e->getMessage(), $matches)) {
die(
sprintf('Create the database %s with the Collation utf8_general_ci', matches[1])
);
}
}
echo 'Setup successfully completed!';
根据条令的文件(1): 通过比较 将元数据实例转换为当前数据库架构 检查 布尔$saveMode如果为TRUE,则只执行部分更新,而不删除计划删除的资产 为避免删除给定元数据之外的资产,应将true作为saveMode参数值传递 (1) 您考虑过吗?
void updateSchema(array $classes, boolean $saveMode = false)