Doctrine2更新实体的最佳方法是什么? (数据库=>学说)

时间:2018-08-21 08:14:55

标签: symfony doctrine-orm

假设我已经设置了所有实体,并且我的存储库链接在这样的注释中:

/**
* User
* @ORM\Entity(repositoryClass="App\Repository\UserRepository")
* @ORM\Table(name="user")
*/
class User
{....}

现在我进入我的sql数据库并添加新列或任何其他更改。我需要更新教义模型,目前我是这样的:

1)php bin/console doctrine:mapping:import App\\Entity annotation --path=src/Entity

2)php bin/console make:entity --regenerate App

这些命令清除了我的实体注释,我得到了:

/**
* User
* @ORM\Entity
* @ORM\Table(name="user")
*/
class User
{....}

3)我必须手动重新链接每个实体中的所有存储库(我有12个)

问题: 有没有一种方法可以更新from database to entity,同时将所有存储库链接保持在实体的顶部?你如何做到的?

我在学说手册中找不到任何东西;我希望设置为doctrine:mapping:import吗?

1 个答案:

答案 0 :(得分:3)

不是从数据库转到实体,而是通过另一种方式:从实体到数据库

  1. 将所需属性添加到实体。像
/**
 * @var string
 *
 * @ORM\Column(name="name", type="string", length=255, nullable=true)
 */
protected $name;
  1. 运行php bin/console doctrine:migrations:diff,您将获得带有$this->addSql('ALTER TABLE user ADD name VARCHAR(255) DEFAULT NULL');

  2. 之类的更改的迁移
  3. 运行迁移


编辑

如果您仍然想走自己的路,至少可以通过在两个命令中都添加--filter="user"来缩小对一个实体的更改