2011-03-29 70 views
0

我正在重構並將我的doctrine2 entites /存儲庫和代理放入單獨的文件夾中。Doctrine2存儲庫,多個目錄

我把它設置爲讀取多個實體目錄,但我與Zend框架整合和我的模型有_命名空間,而不是Admin_Model_Repository_UserApplication\Entity\Repository\User

任何人都有任何指針來管理代理和存儲庫的多個路徑。

回答

0

我不確定代理是什麼,但是您可以很容易地指定多個實體和存儲庫位置。

創建驅動程序時,可以傳遞單個路徑字符串或數組。例如,對於XML:

$driverImpl = new Doctrine\ORM\Mapping\Driver\XmlDriver(array(
    APPLICATION_PATH . '/modules/admin/models', 
    APPLICATION_PATH . '/modules/default/models' 
)); 

或用註釋:

$driverImpl = $config->newDefaultAnnotationDriver(array(
    APPLICATION_PATH . '/modules/admin/models', 
    APPLICATION_PATH . '/modules/default/models' 
)); 

這適用於任何映射驅動器。或者,您可以在創建$ driverImpl後調用addPath()。

對於存儲庫,如果您在映射中指定存儲庫類,只要自動加載器可以訪問它,那麼它可以在任何位置工作。

+0

嘿謝謝,是啊我從多個路徑讀取實體,可能是存儲庫,但我不確定doctri如何ne加載代理。爲了更好的衡量,我讓教條創建了代理,但每當我去使用該實體時,我都會得到這個結果:腳本試圖執行一個方法或訪問一個不完整對象的屬性。請確保您嘗試操作的對象的類定義「Admin_Model_Admin」已加載_before_ unserialize()被調用' – nopx 2011-03-29 12:00:41

+0

請確保您有一個自動加載器可以加載Admin_Model_Admin。雖然我認爲Doctrine在加載映射文件時自己做了。它基本上意味着在加載類之前,類的對象正在被反序列化。 – Gnuffo1 2011-03-29 13:07:10

0

嘿謝謝,你讓我走上正軌。我正在使用zend_auth來通過會話存儲持久化實體,並且我打電話給getIdentity()->getId(),它不喜歡它。工作正常,沒有分開實體dirs,但它沒有問題atm,我只是堅持id存儲並讓我的班級從id重新創建對象。

這似乎是現在的工作,感謝您的幫助

0

我對ZF2

文件module.doctrine_orm.local.config.php解決方案

'drivers' => array(
     'Admin' => array(
      'class' => 'Doctrine\ORM\Mapping\Driver\AnnotationDriver', 
      'namespace' => 'Admin\Model', 
      'paths' => array('module/Admin/src/Admin/Model') 
     ), 
     'Accounting' => array(
      'class' => 'Doctrine\ORM\Mapping\Driver\AnnotationDriver', 
      'namespace' => 'Accounting\Model', 
      'paths' => array('module/Accounting/src/Accounting/Model') 
     ) 
    ), 

'orm_driver_chain' => array(
       'parameters' => array(
        'drivers' => array(
         'application_annotation_driver' => $settings['drivers']['Accounting'], 
         'application_annotation_driver2' => $settings['drivers']['Admin'] 
        ), 
        'cache' => $settings['cache'] 
       ) 
      ),