[英]Doctrine 2.0: get classloader to work for entities
我一直在努力將實體加載到我的第一個Doctrine 2.0項目中。 除了加載我的實體類之外,其他所有東西都正常運行(讓其他類加載,與數據庫通過DBAL的連接成功)。
我會為您提供所需的信息。
我的文件夾的結構是這樣的
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.