2013-02-13 89 views
0

我有一个很奇怪的错误:实体抽象属性被拷贝到扩展实体

Fatal error: Access level to Acme\DemoBundle\Entity\Book::$title 
must be public (as in class Acme\DemoBundle\Entity\AbstractBook) in 
/var/www/html/src/Acme/DemoBundle/Entity/Book.php on line 614 Call 
Stack: 0.0002 674960 1 

线614是不可用的最疯狂的事情是,错误的是离开时,我上传了我的整个实体文件夹从我ide手动对我的本地ubunutu图像。

这是我AbstractBookEntity:

namespace Acme\DemoBundle\Entity; 

use Doctrine\ORM\Mapping as ORM; 
use Symfony\Component\Validator\Constraints as Assert; 

/** 
* @ORM\MappedSuperclass 
* @ORM\HasLifecycleCallbacks 
*/ 
class AbstractBook 
{ 



/** 
* @var string $title 
* 
* @ORM\Column(name="title", type="string", length=45, nullable=true) 
*/ 
public $title; 

Book类:

namespace Acme\DemoBundle\Entity; 

use Symfony\Bridge\Doctrine\Validator\Constraints\UniqueEntity; 
use Symfony\Component\Validator\Constraints as Assert; 
use Doctrine\ORM\Mapping as ORM; 

/** 
* Acme\DemoBundle\Entity\Book 
* 
* @ORM\Table(name="book") 
* @ORM\Entity(repositoryClass="Acme\DemoBundle\Repository\BookRepository")  
*/ 
class Book extends AbstractBook { 

UPDATE:

我发现那里复制并声明为private到从抽象实体属性实体的扩展,但它是如何发生的?

+0

什么是Book类的完整代码? – Ocramius 2013-02-13 22:06:55

+0

这可能是一个缓存错误。你清除了缓存吗? – Mick 2013-02-14 02:34:59

+0

@Ocramius:这里是我的书类:http://jsfiddle.net/S7F7g/还有很多其他的属性,但是intsanciation总是相同的,并且我认为这个错误有noe连接。 – 2013-02-14 07:48:41

回答

0

首先,尝试清除缓存:php app/console cache:clear或者如果失败:rm -Rf app/cache/*

我建议为受保护的声明你的实体变量(不知道,但我的意思是我听说过使用公共问题)。你可以运行php app/console doctrine:generate:entities AcmeDemoBundle来创建getter/setter。

+0

是啊,我已经做了所有事情,我认为教义:生成是问题。但我不明白为什么必须将属性从抽象复制到扩展实体。正如你所说的两次,我会尝试它。 – 2013-02-14 11:27:32

+0

好吧,我从来没有跑过生成:实体allone,现在我有理由。但我不明白为什么学说会这样做? – 2013-02-14 11:34:39

+0

因此,我没有看到其他解决方案将属性从mappedsuperclass复制到扩展实体并删除抽象实体。谢谢 – 2013-02-14 12:22:26