У меня проблемы с надстрочным надкладом. Когда я выполняю команду symfony:
php app/console doctrine:mapping:info
Я получаю это сообщение об исключении:
[Doctrine\Common\Persistence\Mapping\MappingException] Class 'DBiagi\EitaBundle\Entity\BaseFoo' does not exist
Странная часть состоит в том, что класс BaseFoo не находится в папке Entity, и этот класс является отображенным суперклассом. Вот мои файлы:
<?php
# src/DBiagi/EitaBundle/Model/BaseFoo.php
namespace DBiagi\EitaBundle\Model;
/**
* Description of BaseFoo
*
*/
abstract class BaseFoo implements BaseFooInterface{
private $id;
private $name;
public function getId(){
return $this->id;
}
public function getName(){
return $this->name;
}
}
Определение отображения:
# src/DBiagi/EitaBundle/Resources/doctrine/BaseFoo.orm.yml
DBiagi\EitaBundle\Model\BaseFoo:
type: mappedSuperclass
fields:
id:
id:
type: integer
id: true
generator:
strategy: AUTO
name:
type: string
length: 255
Обратите внимание, что класс DBiagi\EitaBundle\Entity\BaseFoo не существует на самом деле, а класс BaseFoo живет в папке Model, поэтому возникает вопрос: почему doctrine пытается загрузить этот класс? Из-за этого исключения я не могу получить мои объекты. Помощь будет очень оценена. Благодарю.
Вы должны установить правильное пространство имен для объектов вашего пакета в основной конфигурации приложения. Предположим, вы используете yml config, smth вроде:
orm:
entity_managers:
default:
mappings:
DBiagiEitaBundle:
prefix: DBiagi\EitaBundle\Model