Мы столкнулись с проблемой наследования в Symfony 5.
Мы создали пакет UserBundle, который включает в себя простой объект User
(идентификатор, адрес электронной почты, пароль): цель этого пакета — легко повторно импортировать его в наши различные проекты. .
В некоторых проектах мы хотим расширить этот объект, добавив некоторые определенные поля (телефон, адрес,...), но это не всегда так.
Вот код, который мы установили:
UserBundle › Класс пользователя:
<?php
namespace MyCompany\UserBundle\Entity;
use Doctrine\ORM\Mapping as ORM;
use Symfony\Component\Security\Core\User\UserInterface;
/**
* @ORM\MappedSuperclass()
*/
class User implements UserInterface
{
/**
* @ORM\Id()
* @ORM\GeneratedValue()
* @ORM\Column(type="integer")
*/
private $id;
...
Унаследован объект пользователя:
<?php
namespace App\Entity;
use MyCompany\UserBundle\Entity\User as BaseUser;
use Doctrine\ORM\Mapping as ORM;
use Symfony\Bridge\Doctrine\Validator\Constraints\UniqueEntity;
/**
* @ORM\Entity
* @UniqueEntity(fields={"email"})
*/
class User extends BaseUser
{
/**
* @ORM\Column(type="string", length=50)
*/
private $phone;
...
Наследование работает нормально: проблема исходит от проектов, для которых нам достаточно User
сущности бандла. =› Класс User
пакета определен как Mapped superclass
, чтобы иметь возможность его расширить, но Doctrine не может создать связанную таблицу, если нет класса, который наследуется от него...
Мы могли бы систематически создавать пустой класс User
в src/, который наследуется от класса User
пакета, но мне это не кажется супер чистым...
Я пошел на этот пост, но это, похоже, не работает: замена Doctrine Inheritance
Может ли кто-нибудь помочь нам в этой проблеме? Я полагаю, что решение должно существовать...
Заранее спасибо!