doctrine 設定の最初のステップは、グローバル設定ファイル内で接続をセットアップすることです。個人的には、これを 2 つのファイルで行います。最初のファイルと./config/autoload/global.php
2 番目のファイルは./config/autoload/local.php
これはまさに 1 つの理由であり、これを含むものはすべて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' => ''
)
)
)
),
);
2 番目のステップは、エンティティのドライバーを作成することです。これはモジュール名前空間ベースで行われます。
./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'
)
)
)
)
);
そこで何が起こっているのですか?さて、新しいドライバーを追加して doctrine['driver'] 配列を拡張します。ドライバーには、モジュールの名前空間があります。このために、構成ファイルで名前空間を定義する必要もあります。ドライバーは、このドライバーのすべてのエンティティが特定のパス内にあることを定義します。
次のステップは、すべてのクラスが構成からロードされるorm_defaults
ことを定義する割り当てによってドライバーが拡張されることです。ModuleNamespace\Entity
ModuleNamespace_driver
最終的に、これは単一のモジュールごとに行われます。Filemanager\Entity\File
したがって、またはクラスを持っているかどうかに関係なくPictureDb\Entity\File
、両方が機能し、両方がロードされます。モジュールは、本質的に互いに独立しています。依存関係を持つことも、連携してうまく機能することもできますが、単独で機能します。したがって、複数のエンティティを持つ複数のモジュールはまったく問題ありません;)
これで、このトピックを少し理解していただければ幸いです。実際の作業例については、トピックをカバーする 2 つのブログ記事を書きました。
これらも少しは役に立ちます。