2013-02-13 90 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