实体抽象属性被复制到扩展实体

时间:2013-02-13 21:49:18

标签: php symfony doctrine-orm

我有一个非常奇怪的错误:

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;

书类:

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 {

更新

我检测到抽象实体中的属性被复制并声明为私有进入扩展实体,但是它是如何发生的?

1 个答案:

答案 0 :(得分:0)

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

我建议将您的实体变量声明为受保护(不确定,但我的意思是我听说过使用公开的问题)。

然后您可以运行php app/console doctrine:generate:entities AcmeDemoBundle来创建getter / setter。