gpt4 book ai didi

php - 如何使用 Doctrine ORM 在 Symfony 中设置初始数据(不是测试数据)

转载 作者:行者123 更新时间:2023-12-03 11:22:05 25 4
gpt4 key购买 nike

我是学习 Symfony(Symfony 4.1.6)的新手,无法弄清楚这一点。

我有一个数据库,它包含许多用于填充 html select 类型输入的表。它们在数据库中以确保其他记录中的外键约束。

有没有办法将这些数据“添加”到数据库中并进行跟踪? (通过 git)还是​​我应该只保留“插入”的 SQL 文件

我看过灯具,但它们似乎主要用于虚拟数据。我想插入真实数据。如果有的话,“最佳实践”是什么?

****更新****
我应该补充一点,这个项目的开发是在 Symfony 之外开始的,所以数据库已经用少量记录手动创建了。我使用 bin/console doctrine:mapping:import 'App\Entity' annotation --path=src/Entity 来构建实体。

是否有类似的方法也可以从数据库中“吸出”少数记录?

也许我只需要手动将 SQL 插入语句添加到第一个(或第二个)迁移文件中。

最佳答案

在 symfony 中,使用生产数据库,通常基于创建和执行迁移,这要归功于 DoctrineMigrationBundle

当您对实体进行一些更改时,总是需要更新数据库布局。您可以通过使用doctrine:migrations:diff命令创建迁移来执行此操作,仔细检查迁移类,然后在生产服务器上使用doctrine:migrations:migrate命令执行迁移类。这是关于数据库模式。

反过来,当您需要在数据库中插入、删除或更新圆顶预定义数据时,您可以通过 doctrine:migrations:generate 创建空迁移类并填充您想要的任何内容。一些例子是:
- 编写原始 sql 查询并执行 - 这是最简单的方法,适用于简单数据
- 创建实体并由实体管理器持久化
- 加载数据库装置 - 这是最复杂的解决方案。

这样,当您升级应用程序时,您不会丢失已经存储在生产数据库中的数据。

DoctrineMigrationsBundle 文档中的更多详细信息:https://symfony.com/doc/master/bundles/DoctrineMigrationsBundle/index.html 和 DoctrineFixturesBundle 文档:https://symfony.com/doc/current/bundles/DoctrineFixturesBundle/index.html

关于php - 如何使用 Doctrine ORM 在 Symfony 中设置初始数据(不是测试数据),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/53090291/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com