【发布时间】:2012-12-20 10:08:50
【问题描述】:
我刚开始使用 Doctrine2,当我想持久化一个实体时出现错误。这是我的错误:'Class "Myapp\app\entity\user" 不是有效的实体或映射的超类。'
我的电脑上没有安装eAccelerator。
我的应用(我不使用 Symfony)结构是这样的:
- 我的应用程序
- 应用程序
- 实体
- 核心
- 外部
- 教义
- 外部
- 应用程序
我用以下命令初始化 Doctrine:
$classLoader = new ClassLoader('Doctrine', CORE_PATH . 'external');
$classLoader->register();
$cache = new \Doctrine\Common\Cache\ArrayCache();
$doctrineConfig = new \Doctrine\ORM\Configuration();
$doctrineConfig->setMetadataCacheImpl($cache);
$doctrineConfig->setQueryCacheImpl($cache);
$driverImpl = $doctrineConfig->newDefaultAnnotationDriver(array(APP_PATH . 'entity'));
$doctrineConfig->setMetadataDriverImpl($driverImpl);
$doctrineConfig->setAutoGenerateProxyClasses(false);
$connectionOptions = array(
'driver' => $database['driver'],
'dbname' => $database['dbname'],
'user' => $database['username'],
'password' => $database['password']
);
$this->em = EntityManager::create($connectionOptions, $doctrineConfig);
这些行有什么问题?
当我使用自动加载器自动加载我的类时,是否有必要使用 Doctrine 类加载器?如果是,这些行是否正确?
$classLoader = new ClassLoader('myApp\app\entity', APP_PATH . 'entity');
$classLoader->register();
$classLoader = new ClassLoader('myApp\core\entity', CORE_PATH . 'entity');
$classLoader->register();
编辑:我忘了添加实体类
使用 Doctrine\ORM\Mapping 作为 ORM;
/**
* @ORM\Entity
*/
class user
{
/**
* @ORM\Column(name="id", type="integer")
* @ORM\Id
* @ORM\GeneratedValue(strategy="AUTO")
*/
protected $id;
/**
* @ORM\Column(name="username", type="string", length=255)
*/
protected $username;
/**
* @ORM\Column(name="nicename", type="string", length=255)
*/
protected $nicename;
/**
* @ORM\Column(name="email", type="string", length=255)
*/
protected $email;
/**
* @ORM\Column(name="password", type="string", length=255)
*/
protected $password;
//getters
//setters
【问题讨论】:
标签: php class configuration doctrine-orm entity