Я пытаюсь использовать Discriminator в сущности, которая простирается от другой.  Это код, который я сделал: 
 /** * @ORM\Entity * @ORM\Table(name="usuarios_externos.usuarios", schema="usuarios_externos") * @ORM\InheritanceType("JOINED") * @ORM\DiscriminatorColumn(name="discr", type="string") * @ORM\DiscriminatorMap({ * "natural" = "Natural", * "empresa" = "Empresa" * }) * @UniqueEntity(fields={"correo_alternativo"}, message="El correo electrónico ya está siendo usado.") * @Gedmo\SoftDeleteable(fieldName="deletedAt", timeAware=false) */ class Usuario extends BaseUser { .... } 
  Но я получаю эту ошибку при запуске команды doctrine:schema:validate : 
[Doctrine \ ORM \ Mapping \ MappingException] Сущность «UsuarioBundle \ Entity \ Usuario» должна быть частью карты дискриминатора «UsuarioBundle \ Entity \ Usuario», которая должна быть правильно отображена в иерархии наследования. В качестве альтернативы вы можете сделать «UsuarioBundle \ Entity \ Usuario» абстрактным классом, чтобы избежать этого исключения.
Любой способ исправить это? Можно использовать Disccriminator в расширенных классах?
  Ответ прямо в warning сообщении! 
  В основном, это говорит вам, что Usuario определен таким образом, который может привести к неприятностям.  В его текущей форме этот код позволяет вам создать экземпляр Usuario и работать с ним.  Но подождите секунду.  Это не определено на карте дискриминатора.  Итак, что произойдет, когда вы попытаетесь его сохранить?  Boom!  … или, по крайней мере, это вызовет уродливое исключение. 
  Теперь я знаю, что вы, вероятно, даже не думали о создании Usuario .  Это просто базовый класс для Natural и Empresa , но Doctrine этого не знает . 
Итак, как вы можете это исправить? В зависимости от ваших потребностей возможны два сценария:
Usuario должен быть реалистичным   То есть пользователи в вашем приложении могут быть экземпляром Natural , Empresa или просто Usuario .  Вероятно, это не так, но это может относиться к будущему читателю. 
  Решение: добавьте Usuario к карте дискриминатора.  Это позволит вашим пользователям быть одним из трех типов. 
  * ... * @ORM\DiscriminatorMap({ * "usuario" = "Usuario", * "natural" = "Natural", * "empresa" = "Empresa" * }) * ... 
Usuario не должен быть реалистичным   То есть пользователи в вашем приложении могут быть либо экземпляром Natural либо Empresa , но никогда не Usuario . 
  Решение: сделайте Usuario abstract классом.  Это сделает невозможным создание экземпляра. 
 abstract class Usuario extends BaseUser { ...