使用带有Doctrine 2的映射超类

时间:2012-05-05 12:07:35

标签: php doctrine-orm mappedsuperclass

对于学校我正在制作一个与ORM一起使用的php项目。学说2.它必须有一个继承。我做了以下设置,我想在屏幕上打印客户。

由于所需的继承,我会扩展客户和用户的类人。 这是现在定义的方式

/** @MappedSuperclass */
class Person {

/** @Id @Column(type="integer") */
protected $id;
protected $name;
protected $email;

protected $bar;

public function getId()
{
    return $this->id;
}

public function getName()
{
    return $this->name;
}

public function setName($name)
{
    $this->name = $name;
}

public function getEmail()
{
    return $this->email;
}

public function setEmail($email)
{
    $this->email = $email;
}


public function getBar()
{
    return $this->bar;
}

public function setBar($bar)
{
    $this->bar = $bar;
}

}

/** @Entity */
class Customer extends Person
{
protected $photo;
protected $facebook;
protected $orders = null;


public function __construct()
{
    $this->orders = new ArrayCollection();
}

public function getPhoto()
{
    return $this->photo;
}

public function setPhoto($photo)
{
    $this->photo = $photo;
}


public function getFacebook()
{
    return $this->facebook;
}

public function setFacebook($facebook)
{
    $this->facebook = $facebook;
}

}

我可以创建数据库并且所有查询都正常工作,但如果我尝试运行客户查询,我将收到错误。所有其他未参与继承的查询都正常工作。因此问题不在于查询或视图。

这是查询的结果

Fatal error: Uncaught exception 'PDOException' with message 'SQLSTATE[HY000]: General error: 1 no such column: p0_.id' in /Users/arcooverbeek/doctrine2-orm/lib/vendor/doctrine-dbal/lib/Doctrine/DBAL/Connection.php:633
Stack trace: #0 /Users/arcooverbeek/doctrine2-orm/lib/vendor/doctrine-dbal/lib/Doctrine/DBAL/Connection.php(633): PDO->query('SELECT p0_.id A...')
#1 /Users/arcooverbeek/doctrine2-orm/lib/Doctrine/ORM/Query/Exec/SingleSelectExecutor.php(46): Doctrine\DBAL\Connection->executeQuery('SELECT p0_.id A...', Array, Array, NULL)
#2 /Users/arcooverbeek/doctrine2-orm/lib/Doctrine/ORM/Query.php(260): Doctrine\ORM\Query\Exec\SingleSelectExecutor->execute(Object(Doctrine\DBAL\Connection), Array, Array) #3 /Users/arcooverbeek/doctrine2-orm/lib/Doctrine/ORM/AbstractQuery.php(733): Doctrine\ORM\Query->_doExecute()
#4 /Users/arcooverbeek/doctrine2-orm/lib/Doctrine/ORM/AbstractQuery.php(535): Doctrine\ORM\AbstractQuery->execute(Array, 1)
#5 /Applications/MAMP/htdocs/doc/repositories/CustomerRepository.php(13): Doctrine\ORM\Ab in /Users/arcooverbeek/doctrine2-orm/lib/vendor/doctrine-dbal/lib/Doctrine/DBAL/Connection.php on line 633

创建的数据库看起来像行,并且具有在Person中定义的字段。有一件事我注意到还有一个人的桌子,我认为这是不合时宜的?

我好好看一下文档。并且谷歌发现了这个错误,但它并没有让我更进一步。

0 个答案:

没有答案