当我尝试清除缓存时,我收到此错误(例如):
[Doctrine \ ORM \ Mapping \ MappingException]类 Aib \ PlatformBundle \ Entity \ User不是有效实体或映射超级 类。
这是User.php:
<?php
// src/Aib/PlatformBundle/Entity/User.php
namespace Aib\PlatformBundle\Entity;
use FOS\UserBundle\Entity\User as BaseUser;
use Doctrine\ORM\Mapping as ORM;
/**
* @ORM\Entity
* @ORM\Table(name="fos_user")
*/
class User extends BaseUser
{
/**
* @ORM\Id
* @ORM\Column(type="integer")
* @ORM\GeneratedValue(strategy="AUTO")
*/
protected $id;
public function __construct()
{
parent::__construct();
// your own logic
}
}
这是存储User.php的地方:
javier @ javier:〜/ programacion / aib / src / Aib / PlatformBundle / Entity $ ls User.php UserRepository.php
这是AppKernel.php:
public function registerBundles()
{
$bundles = array(
...
new Aib\PlatformBundle\AibPlatformBundle(),
...
);
sf 2.0.4
答案 0 :(得分:13)
就我而言,我在班级定义中遗漏了* @ORM\Entity
。
/**
* @ORM\Entity
* @ORM\Table(name="listtype")
*/
class ListType
{
...
}
答案 1 :(得分:4)
我对FOS UserBundle的实现有完全相同的经验,发现我能够通过删除MyBundle \ Resources \ config \ doctrine文件夹来解决问题。
我不完全理解原因(新手),但认为这个问题是由于数据库内容建立在麻烦的方向,即来自学说实体和对一些表进行逆向工程。
答案 2 :(得分:2)
我遇到了同样的问题,结果是app / config / config.yml
它需要在NameBundle下面定义默认包,然后它工作正常
orm:
auto_generate_proxy_classes: %kernel.debug%
default_entity_manager: default
entity_managers:
default:
mappings:
NameBundle: ~
答案 3 :(得分:1)
在我的情况下,通过将我的服务器缓存从 eAccelerator 更改为 APC 来解决问题。 显然,eAccelerator会删除文件中的所有注释,这会破坏您的注释。
答案 4 :(得分:0)
我有同样的错误,但这是因为我没有包括Sonata应用程序:
试试这个:
在AppKernel.php中添加一行
$bundles = array(
...
new Application\Sonata\UserBundle\ApplicationSonataUserBundle(),
...
答案 5 :(得分:0)
如果从映射类继承,则可以在实体的注释中添加@ORM \ SuperMappedClass。 您可以在this article中阅读大部分信息。