Задать вопрос

Наследование сущностей через Superclass в Doctrine 2, почему поля копируются в наследников?

Всем добрый день!



Разбираюсь с наследованием в Doctrine 2, как описано здесь.



Создаю класс:



use Doctrine\ORM\Mapping as ORM;<br><br>
/**<br>
 *<br>
 * @ORM\MappedSuperclass<br>
 */<br>
abstract class AbstractEntity<br>
{<br>
    /**<br>
     * @var User<br>
     * @ORM\ManyToOne(targetEntity="User")<br>
     * @ORM\JoinColumn(name="user_created_id", referencedColumnName="id")<br>
     */<br>
    protected $userCreated;<br><br>
    /**<br>
     * Set userCreated<br>
     *<br>
     * @param User $userCreated<br>
     * @return AbstractEntity<br>
     */<br>
    public function setUserCreated(User $userCreated = null)<br>
    {<br>
        $this->userCreated = $userCreated;<br>
        return $this;<br>
    }<br><br>
    /**<br>
     * Get userCreated<br>
     *<br>
     * @return User<br>
     */<br>
    public function getUserCreated()<br>
    {<br>
        return $this->userCreated;<br>
    }<br>
}<br>




Создаю наследника:

/**<br>
 * @ORM\Entity<br>
 */<br>
class Record extends AbstractEntity {<br>
    /**<br>
     * @ORM\Id<br>
     * @ORM\Column(name="id", type="integer")<br>
     * @var integer<br>
     */<br>
    protected $id;<br>
}<br>




И после этого в консоли выполняю

php app/console doctrine:generate:entities NAMESPACE




В чём проблема: генератор доктрины копирует поле $userCreated вместе с геттерами и сеттерами в наследника. Как этого избежать? В том же FOSUsersBundle наследование прокатывает, правда там конфиг в xml, а не в аннотациях как у меня, но не может быть это проблемой же?
  • Вопрос задан
  • 3924 просмотра
Подписаться 3 Оценить Комментировать
Решения вопроса 1
m_z
@m_z
Выполнение doctrine:generate:entities нужно вообще избегать. Эта команда используется только для старта и позволяет конвертировать существующую структуру базы данных в сущности. В дальнейшем сущности нужно править только руками.
Ответ написан
Комментировать
Пригласить эксперта
Ответы на вопрос 1
MuXaJIbI4
@MuXaJIbI4
сам не проверял… но может потому что у них User абстрактный класс?
Ответ написан
Комментировать
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы