我想在包含兩個模塊的ZF2應用程序中使用Doctrine 2,每個模塊都有自己的數據庫。我需要使用跨數據庫連接,以便我可以將一個模塊中的實體與另一個模塊中的實體相關聯。 Here's a UML diagram的設置。ReflectionException在從不同數據庫的Doctrine映射實體時引發
我在我的第一個實體使用這種嘗試(我已經去除了無關緊要的參數和use
語句):
namespace Client\Entity;
/**
* A website.
*
* @ORM\Entity
* @ORM\Table(name="users.website")
* ...
* @property $server
*/
class Website extends BaseEntity {
// Other class vars ...
/**
* @ORM\ManyToOne(targetEntity="Server\Entity\Server", inversedBy="websites")
* @ORM\JoinColumn(name="server_id", referencedColumnName="id")
*/
protected $server;
而這在我的服務器實體:
namespace Server\Entity;
/**
* A server.
*
* @ORM\Entity
* @ORM\Table(name="servers.server")
* ...
* @property $websites
*/
class Server extends BaseEntity {
// Other class vars ...
/**
* @ORM\OneToMany(targetEntity="Client\Entity\Website", mappedBy="server")
*/
protected $websites;
這種映射作品完全當我創建一個新的網站實體時(通過使用DoctrineModule\Form\Element\ObjectSelect
作爲服務器關聯的網絡表單),但是當我去編輯現有網站時,拋出此ReflectionException:
類Server \實體\網站不存在
完整的堆棧跟蹤can be found here。出於某種原因,當服務器實體通過與網站實體的關聯進行訪問時,它認爲所有實體都存在於Server\Entity
命名空間中,而不是Client\Entity
。我需要做些什麼來確保Server實體在正確的模塊名稱空間中查找?
的CLI命令orm:info
生產:
Found 7 mapped entities:
[OK] Server\Entity\Server
[OK] Client\Entity\Role
[OK] Client\Entity\Website
[OK] Client\Entity\User
[OK] Client\Entity\Client
[OK] Client\Entity\Permission
[OK] Message\Entity\Notification
但orm:validate-schema
結果:
[Mapping] OK - The mapping files are correct.
[Database] FAIL - The database schema is not in sync with the current mapping file.
我有這個在我模塊的module.config.php
每一個:
'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'
)
)
)
'orm:schema-tool:update --dump-sql'會產生什麼?另外:考慮到DBAL模式工具每次都在單個數據庫上進行自省,所以這可能是這裏的問題(已知的) – Ocramius 2013-02-21 10:39:52
@Ocramius http://pastebin.com/DrtLHqsN。與之前嘗試創建'users.'時存在於'servers.'數據庫之前的內容稍有不同。'數據庫 – hohner 2013-02-21 10:48:59
@Ocramius我也用'orm:schema'成功更新了我的模式-tool:update --force',但是'validate-schema'仍然返回相同的數據庫失敗消息 – hohner 2013-02-21 10:56:53