Nous rencontrons un problème avec l'héritage sur Symfony 5.
Nous avons créé un UserBundle qui comprend un simple User
entité ( id, email, mot de passe ) : le but de ce bundle est de pouvoir le réimporter facilement dans nos différents projets.
Dans certains projets, nous voulons étendre cette entité pour ajouter certains champs spécifiques ( téléphone, adresse, ... ), mais ce n'est pas toujours le cas.
Voici le code que nous avions mis en place :
UserBundle > Classe d'utilisateur :
<?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;
...
Entité utilisateur héritée :
<?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;
...
L'héritage fonctionne bien : le problème vient des projets pour lesquels le User
entité de la liasse est suffisante pour nous . => Le User
de la liasse est définie comme suit Mapped superclass
afin de pouvoir l'étendre mais Doctrine ne peut pas créer une table associée s'il n'y a pas de classe qui en hérite...
Nous pourrions systématiquement créer un User
classe dans src/ qui hérite de la User
de l'ensemble, mais cela ne me semble pas très propre...
Je suis allé sur ce post mais cela ne semble pas fonctionner : Doctrine de remplacement de l'héritage
Quelqu'un peut-il nous aider à résoudre ce problème ? J'imagine qu'une solution doit exister...
Merci d'avance !