原则配置的第一步是在您的全局配置文件中设置连接。我个人在两个文件中执行此操作,第一个是 ./config/autoload/global.php,第二个是 ./config/autoload/local.php
这是出于一个非常原因,即任何包含 local 的内容都不会发布到我的 git 存储库中。所以我的凭据是安全的。
./config/autoload/global.php
return array(
'doctrine' => array(
'connection' => array(
'orm_default' => array(
'driverClass' => 'Doctrine\DBAL\Driver\PDOMySql\Driver',
'params' => array(
'host' => 'localhost',
'port' => '3306',
'dbname' => 'dbname'
)
)
)
),
);
./config/autoload/local.php
return array(
'doctrine' => array(
'connection' => array(
'orm_default' => array(
'params' => array(
'user' => 'root',
'password' => ''
)
)
)
),
);
第二步是为您的实体创建驱动程序。这是在模块命名空间基础上完成的。
./modules/ModuleNamespace/config/module.config.php
<?php
namespace ModuleNamespace;
return array(
//... some more configuration
'doctrine' => array(
'driver' => array(
__NAMESPACE__ . '_driver' => array(
'class' => 'Doctrine\ORM\Mapping\Driver\AnnotationDriver',
'cache' => 'array',
'paths' => array(__DIR__ . '/../src/' . __NAMESPACE__ . '/Entity')
),
'orm_default' => array(
'drivers' => array(
__NAMESPACE__ . '\Entity' => __NAMESPACE__ . '_driver'
)
)
)
)
);
那里发生了什么?好吧,我们通过添加一个新的驱动程序来扩展教义['driver'] 数组。驱动程序具有我们模块的命名空间。为此,我们还需要在配置文件中定义命名空间。驱动程序定义该驱动程序的所有实体都在某个路径内。
下一步完成的是,orm_defaults 驱动程序通过定义所有ModuleNamespace\Entity 类从我们的ModuleNamespace_driver 配置加载的分配进行扩展。
最终,这是针对每个模块完成的。因此,无论您使用的是 Filemanager\Entity\File 还是 PictureDb\Entity\File 类,两者都可以工作并且都将被加载。模块本质上是相互独立的。尽管它们可以有依赖关系,或者更确切地说可以很好地协同工作,但它们可以独立运行。所以具有多个实体的多个模块完全没有问题;)
我希望这能让你稍微理解这个话题。对于实时工作示例,我写了两篇涵盖该主题的博客文章。
这些也可能对您有所帮助。