Php 实体抽象属性已复制到扩展实体

Php 实体抽象属性已复制到扩展实体,php,symfony,doctrine-orm,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行不可用,

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

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 {
更新:


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

首先,尝试清除缓存:
php应用程序/控制台缓存:清除
,或者如果失败:
rm-Rf app/cache/*

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


然后您可以运行
php应用程序/控制台原则:generate:entities AcmeDemoBundle
来创建getter/setter。

Book类的完整代码是什么?这可能是缓存错误。你清除缓存了吗?@Ocramius:这是我的图书类:还有很多其他属性,但是链接总是一样的,我想与这个错误没有任何联系。@Patt我清除了缓存太多次了,你试着在一个绝缘的环境中复制这个吗?你是不是碰巧得到了apc.stat=0?是的,我做了所有的事情,我认为条令:生成是个问题。但是我不明白为什么属性必须作为私有从抽象复制到扩展实体。我会像你说的那样尝试两次。好吧,我从来没有运行过generate:entities allone,现在我有了原因。但我不明白为什么doctrine会这样做?因此,我看不到其他解决方案可以将属性从mappedsuperclass复制到扩展实体并删除抽象实体。谢谢我不确定我是否理解你的问题。但您不必为实体定义抽象类。你也可以只定义你的类书,这应该足够了。不,我有两个实体,它们的属性基本相同,但我想要两个不同的数据库表。所以我认为最好的解决方案是创建一个抽象实体,将其用于两个实体。当我调用php app/console generate:entites时,抽象实体中的属性被复制到扩展实体中,我不明白为什么。我可以移除它们,然后一切都会好起来。但这不是一个解决办法。