Доктрина не создает свойства наследуемого класса

У меня есть один абстрактный MappedSuperClass и другой класс под названием «пользователь», который является дочерним для этого MappedSuperClass. Проблема в том, что доктрина не генерирует свойства пользовательского класса. Только свойства MappedSuperClass. Почему?

<?php
namespace IsCoconutModels;
use DateTime;
use DoctrineORMMappingColumn;
use DoctrineORMMappingGeneratedValue;
use DoctrineORMMappingId;
use DoctrineORMMappingMappedSuperclass;


/** @MappedSuperclass */
abstract class BaseEntity
{
    /**
     * @var int
     * @Id 
     * @Column(type="integer") 
     * @GeneratedValue(strategy="AUTO")
     */
    protected $id;

    /** @Column(type="boolean")
     *  @var boolean
     */
    protected $deleted = false;

    /** @Column(name="creation_date_time", type="datetime")
     *  @var DateTime
     */
    protected $creationDateTime;

    protected function __construct()
    {
        $this->creationDateTime = new DateTime();
    }
}

И это моя сущность, которая должна быть сгенерирована в базе данных доктриной

<?php
namespace IsCoconutModels;
use DoctrineORMMapping as ORM;
use DoctrineORMMappingEntity;
use DoctrineORMMappingTable;

/**
 * @Entity
 * @Table(name="users")
 */
class User extends BaseEntity
{
    /**
     * @var string
     * @ORMColumn(type="string", length=512)
     */
    private $forename;

    /**
     * @var string
     * @ORMColumn(type="string", length=512)
     */
    private $surname;

    /**
     * @var string
     * @ORMColumn(type="string", length=512, unique=true, nullable=false)
     */
    private $email;

    /**
     * @var string
     * @ORMColumn(type="string", length=512, unique=true, nullable=false)
     */
    private $passwordHash;
}

Это выход doctrine orm:schema-tool:create --dump-sql

CREATE TABLE users (id INT NOT NULL, deleted BOOLEAN NOT NULL, creation_date_time TIMESTAMP(0) WITHOUT TIME ZONE NOT NULL, PRIMARY KEY(id));
CREATE SEQUENCE users_id_seq INCREMENT BY 1 MINVALUE 1 START 1;

Свойства сущности класса пользователя отсутствуют! Почему?

5 ответов

  1. На самом деле, это может быть решением:

    изменение:

    abstract class BaseEntity
    

    к:

    class BaseEntity
    

    Посмотрим, сработает ли это. Это не может, пожалуйста, попробуйте.

  2. У меня была та же проблема, и я обнаружил, что это было из-за свойств, установленных как частные.

    /**
     * @ORM\MappedSuperclass
     */
    class BaseClass
    {
    
        /**
         * @var string
         * @ORM\Column(type="string", length=250, nullable=false)
         */
        protected $channel;
        //private $channel;
     }
    
  3. Отображение в абстрактном классе * @ORM\MappedSuperclassне должно быть /** @MappedSuperclass */. Отображение выполняется доктриной, поэтому здесь важна аннотация ORM.
    Вы также должны убедиться, что ваши свойства в абстрактном классе protected(которые вы уже сказали, что они были)