如何在 Symfony 4 中更新数据库?

How to update the database in Symfony 4?

当我给出以下命令时:

php bin/console doctrine:schema:update --force

数据库得到更新,但之后这个命令:

php bin/console doctrine:schema:validate

一直说数据库不同步(见下面的截图)。

我missing/doing哪里错了?

根据数据库类型和OS,测试可能会给出一些"false negatives",这意味着你的数据库已经可以了,但Doctrine不太明白。它发生在我的几个项目中,无论 Symfony 版本如何(这意味着 Symfony 2,3 和 4)。

此外,在 Symfony 4 中,您可以按照 the docs 中的说明使用迁移,即:

bin/console make:migration

此命令将在 src/Migrations 中创建一个迁移文件,但不会触及数据库。

要了解发生了什么(从 Doctrine 的角度来看),您可以查看迁移文件:它是一个 PHP class,有两种方法(up()down()).

up() 方法将包含使数据库与您的映射文件保持一致所需的 query/queries。

要应用所有待处理的迁移,运行:

bin/console doctrine:migrations:migrate