簡體   English   中英

Doctrine 2.0:使類加載器適用於實體

[英]Doctrine 2.0: get classloader to work for entities

我一直在努力將實體加載到我的第一個Doctrine 2.0項目中。 除了加載我的實體類之外,其他所有東西都正常運行(讓其他類加載,與數據庫通過DBAL的連接成功)。

我會為您提供所需的信息。

  • 我安裝了Toctrine槽的tarball方法
  • 我的文件夾的結構是這樣的

     public_html -> docrine test -> entities -> User.php -> Video.php 
  • 在我的引導文件中,我試圖用

     <?php $sRoot = "/home/..../public_html/doctrinetest"; $classLoader = new \\Doctrine\\Common\\ClassLoader('doctrinetest\\entities', $sRoot.'/doctrinetest/entities'); $classLoader->register(); // register on SPL autoload stack 
  • 作為名稱空間,我在違反類之前放置了以下行

     namespace doctrinetest\\entities; 
  • 然后,當我嘗試運行命令以生成我的方案時

     $tool = new \\Doctrine\\ORM\\Tools\\SchemaTool($em); $classes = array( $em->getClassMetadata('Video'), $em->getClassMetadata('User') ); $tool->createSchema($classes); 
  • 我得到錯誤

     Warning: class_parents() [function.class-parents]: Class Video does not exist and could not be loaded in /home/..../public_html/doctrine2-tarball/Doctrine/Common/Persistence/Mapping/RuntimeReflectionService.php on line 40 

請幫我解決這個問題,謝謝

首先,\\ Doctrine \\ Common \\ ClassLoader在“ includePath / namespace /”目錄中找到類。

<?php
$sRoot = "/home/..../public_html/doctrinetest";
$classLoader = new \Doctrine\Common\ClassLoader('doctrinetest\entities', $sRoot.'/doctrinetest/entities');
$classLoader->register();
?>

上面的代碼嘗試在“ /home/..../public_html/doctrinetest/doctrinetest/entities/doctrinetest/entities/”目錄中找到類。 當然,找不到類。

其次,EntityManager的getClassMetadata函數希望className 包括參數的名稱空間

因此像這樣使用。

$em->getClassMetadata('\\doctrinetest\\entities\\Video');

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM