Database 什么';s生成迁移数据库和生成迁移模型之间的区别

Database 什么';s生成迁移数据库和生成迁移模型之间的区别,database,symfony1,doctrine,migration,symfony-1.4,Database,Symfony1,Doctrine,Migration,Symfony 1.4,两者的区别是什么 symfony doctrine:generate-migrations-db 及 我没有注意到任何区别:我试过使用DB中的表,没有schema.yml,也没有模型,它们都没有效果。没有生成迁移 我试过使用DB中的表,生成schema.yml,但没有模型,它们都没有效果。没有生成迁移 最后,我尝试了DB中的表、GENERATED schema.yml和GENERATED models,现在它们都生成了相同的迁移类:| 我真的不明白其中的区别。或者至少,考虑到所有场景,开始使用

两者的区别是什么

symfony doctrine:generate-migrations-db

我没有注意到任何区别:我试过使用DB中的表,没有schema.yml,也没有模型,它们都没有效果。没有生成迁移

我试过使用DB中的表,生成schema.yml,但没有模型,它们都没有效果。没有生成迁移

最后,我尝试了DB中的表、GENERATED schema.yml和GENERATED models,现在它们都生成了相同的迁移类:|

我真的不明白其中的区别。或者至少,考虑到所有场景,开始使用迁移的最佳方式是什么:有模型但没有数据库,有数据库但没有模型


谢谢。

给定一个包含1+个表的现有数据库,正在运行

./symfony doctrine:generate-migrations-db
./symfony doctrine:generate-migrations-models
将导致为每个表创建迁移文件。类似地,给定一个类似于
/lib/model/doctor
的目录,其中填充了预先存在的模型类,运行

./symfony doctrine:generate-migrations-db
./symfony doctrine:generate-migrations-models
将导致为每个模型创建migraiton文件

对于数据库中的表,无论是否包含schema.yml内容,并且
lib/model/doctor
中没有模型,您只需确保您的database.yml文件具有正确连接到数据库的凭据

一旦您发现迁移文件无法生成的问题,我将做的是开始迁移

  • 使用
    /symfony原则:构建模式
  • 手动清理模式文件,并重新建立模型文件中已有的关系(如果有的话)
  • 重新配置
    config/databases.yml
    以指向新的空白数据库
  • 使用
    /symfony原则构建迁移:生成迁移差异
    。这将基于您的架构文件创建迁移,以使(空白)数据库保持最新
  • 运行
    /symfony原则:迁移
    并观察错误。通过修复模式文件来修复它们。删除在步骤4中创建的迁移。刷新数据库
    /symfony原则:删除数据库&&./symfony原则:构建数据库
    ,然后返回步骤4。继续,直到您确定架构生成了一组干净的迁移文件,这些文件可以正常运行
  • 使用
    /symfony原则重建模型:构建--模型--表单--过滤器
  • 现在,您有了一个干净的
    schema.yml
    文件,可以使空白数据库更新的干净迁移,以及与
    schema.yml
    文件和数据库直接相关的模型

    当您想对数据库进行新的更改时,现在只需

  • schema.yml中进行所需的更改
  • 运行
    /symfony原则:生成迁移差异
  • 手动查看生成的迁移
  • 运行
    /symfony原则:migrate
    ,确保迁移运行无误
  • 重建模型、表单和过滤器
    /symfony原则:构建--模型--表单--过滤器
  • 经历这个过程有时会令人沮丧,但这是一件你只需要做一次就可以创建一个真正好的基础的事情