Использование сопоставленных суперклассов с Doctrine 2
Для школы я делаю php проект, который работает с ORM. Учение 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. Одна вещь, которую я заметил, что есть также стол человека, который я считаю несуразным?
Я хорошо посмотрел документацию. И google'd эту ошибку, но она не получила меня дальше.