加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 站长学院 > PHP教程 > 正文

php – Symfony 4 / doctrine插入初始数据库数据

发布时间:2020-12-13 16:11:11 所属栏目:PHP教程 来源:网络整理
导读:我正在使用symfony 4.2并寻找一种方法将初始数据插入数据库. 我试图创建的东西类似于初始设置脚本,它可以执行一些sql插入(如fixtures但也适用于生产环境),可以通过控制台命令调用. 我正在考虑在doctrine迁移类中使用postUp函数,但我不想为我设置的每个生产环
我正在使用symfony 4.2并寻找一种方法将初始数据插入数据库.
我试图创建的东西类似于初始设置脚本,它可以执行一些sql插入(如fixtures但也适用于生产环境),可以通过控制台命令调用.

我正在考虑在doctrine迁移类中使用postUp函数,但我不想为我设置的每个生产环境重写此函数.
有没有办法为此目的使用doctrines迁移功能,还是有一种首选方式?

示例工作流程

>通过克隆git存储库来安装symfony
>执行迁移以创建/更新数据库表
>执行安装脚本以将所需的默认值插入数据库表

解决方法

在生产中使用doctrine fixtures bundle

虽然这是不鼓励的,因为您可能会意外丢弃生产数据库,但我确实看到了一些在生产环境中使用dotrine fixtures包的有效用例.

您可以编辑config / bundles.php以在生产环境中启用doctrine fixtures包.

更改

DoctrineBundleFixturesBundleDoctrineFixturesBundle::class => ['dev' => true,'test' => true],

DoctrineBundleFixturesBundleDoctrineFixturesBundle::class => ['all' => true],

为夹具加载创建自己的命令

也不建议使用doctrine功能手动加载灯具,但这样您就可以添加其他检查,例如只填充新数据库.

$fixtures = (new DoctrineCommonDataFixturesLoader())->loadFromDirectory(__DIR__ . '/../src/DataFixture');
$loader = new DoctrineBundleFixturesBundleLoaderSymfonyFixturesLoader(new SymfonyComponentDependencyInjectionContainer());
$loader->addFixtures(
    array_map(
        function ($fixture) {
            return [
              'fixture' => $fixture,'groups' => []
            ];
        },$fixtures
    )
);

$purger = new DoctrineCommonDataFixturesPurgerORMPurger($entityManager);

$executor = new DoctrineCommonDataFixturesExecutorORMExecutor($entityManager,$purger);
$executor->execute(
    $loader->getFixtures()
);

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读