shoofly / doctrine-multi-schema-bundle

为 Doctrine + Symfony 启用多个模式

v0.1.6 2017-12-08 05:06 UTC

This package is not auto-updated.

Last update: 2024-09-24 23:50:20 UTC


README

为 Doctrine 的 MySQL 启用多个模式

我创建此包是为了满足我的一个项目的需求。它并未对所有用例进行彻底测试,并将定期更新。

如果你发现这个包很有用但发现了一个错误,我欢迎你提交 PR。

前提

Doctrine 将 MySQL 数据库与 PostgreSQL 数据库同等对待。实际上,MySQL 数据库在本质上更接近 PostgreSQL 模式,MySQL 中的 DATABASE 可以与 SCHEMA 互换使用,甚至在 语法上 也可以。

CREATE {DATABASE | SCHEMA} [IF NOT EXISTS] db_name ...

这使得处理使用多个模式的 MySQL 架构变得非常困难——这在继承的代码中通常是现实情况。

如果你的个人用例是将具有多个模式的项目转移到 Symfony 项目中,并且你想使用 Doctrine,那么这个包试图使这成为可能。

安装

在你的 Symfony 项目中,使用以下命令安装:

composer require shoofly/doctrine-multi-schema-bundle

将以下内容添加到你的 Symfony AppKernel.php 中:

$bundles = [
    new Shoofly\DoctrineMultiSchemaBundle\ShooflyDoctrineMultiSchemaBundle(),
];

配置

重要:移除你的驱动和平台,并用这两个参数替换。

doctrine:
    dbal:
        driver_class: 'Shoofly\DoctrineMultiSchemaBundle\DBAL\MySQL\Driver'
        platform_service: "shoofly_doctrine_multi_schema.platform57"
        # for MySQL < 5.7, choose this:
        # platform_service: "shoofly_doctrine_multi_schema.platform"

接下来,列出你想要包含在 ORM 中的模式

shoofly_doctrine_multi_schema:
    schemas:
        - foo
        - baz
        - bar

这应该是你需要的唯一配置。如果你遇到任何问题,请告诉我。

希望这能帮助其他人。如果不,它已经帮到我:)