[Symfony 3.2] Cloner une entité vers une autre entité
patrice86
Messages postés
1380
Date d'inscription
Statut
Membre
Dernière intervention
-
patrice86 Messages postés 1380 Date d'inscription Statut Membre Dernière intervention -
patrice86 Messages postés 1380 Date d'inscription Statut Membre Dernière intervention -
Bonjour,
Je dispose d'une entité qui me sert d'entité mère :
Deux entités filles héritent de cette entité mère :
Enfin, j'ai une classe Meeting qui est liée à la classe Hostess :
J'ai créé un FormType pour la classe Meeting avec, pour le champ hostess, un type EntityType qui pointe vers la classe mère Customer.
L'intérêt est que l'utilisateur doit pouvoir choisir aussi bien un Client ou un Hostess pour créer une réunion. Hors, comme meeting dispose d'un attribut qui pointe vers Hostess, si j'envoie un Customer de type Client, j'obtiens une erreur lors du handleRequest($request) :
C'est normal, je n'envoie pas le bon type.
En fait ce que je veux faire, c'est que si l'utilisateur envoie un Client à la place d'un Hostess, avant le handleRequest, tester si il s’agit d'un type Client. Si oui, alors je copie les informations du Client pour créer un objet de type Hostess et je modifie l'objet Request pour indiquer le nouveau Hostess créer juste avant et le handleRequest($request) fonctionnera correctement (normalement...).
Des idées pour faire ça ? Je suis un peu perdu dans le fonctionnement du form dans se cas là.
Merci !!! :) :)
Je dispose d'une entité qui me sert d'entité mère :
/** * Partner * * @ORM\Table(name="customer") * @ORM\Entity(repositoryClass="XXX\RhBundle\Repository\CustomerRepository") * @ORM\InheritanceType("SINGLE_TABLE") * @ORM\DiscriminatorColumn(name="status", type="string") * @ORM\DiscriminatorMap({"client" = "Client", "hostess" = "Hostess"}) */ abstract class Customer
Deux entités filles héritent de cette entité mère :
/** * @ORM\Entity(repositoryClass="XXXX\RhBundle\Repository\ClientRepository") * @ORM\Table(name="client") */ class Client extends Customer { ... }
/** * @ORM\Entity(repositoryClass="XXXX\RhBundle\Repository\HostessRepository") * @ORM\Table(name="client") */ class Hostess extends Customer { ... }
Enfin, j'ai une classe Meeting qui est liée à la classe Hostess :
/** * @ORM\Entity * @ORM\Table(name="meeting") * @ORM\Entity(repositoryClass="DomiGestion\MeetingBundle\Entity\MeetingRepository") */ class Meeting { /** * @ORM\ManyToOne(targetEntity="DomiGestion\RhBundle\Entity\Hostess", inversedBy="meeting") */ protected $hostess; }
J'ai créé un FormType pour la classe Meeting avec, pour le champ hostess, un type EntityType qui pointe vers la classe mère Customer.
L'intérêt est que l'utilisateur doit pouvoir choisir aussi bien un Client ou un Hostess pour créer une réunion. Hors, comme meeting dispose d'un attribut qui pointe vers Hostess, si j'envoie un Customer de type Client, j'obtiens une erreur lors du handleRequest($request) :
Expected argument of type "XXX\RhBundle\Entity\Hostess", "XXX\RhBundle\Entity\Client" given
C'est normal, je n'envoie pas le bon type.
En fait ce que je veux faire, c'est que si l'utilisateur envoie un Client à la place d'un Hostess, avant le handleRequest, tester si il s’agit d'un type Client. Si oui, alors je copie les informations du Client pour créer un objet de type Hostess et je modifie l'objet Request pour indiquer le nouveau Hostess créer juste avant et le handleRequest($request) fonctionnera correctement (normalement...).
Des idées pour faire ça ? Je suis un peu perdu dans le fonctionnement du form dans se cas là.
Merci !!! :) :)
A voir également:
- [Symfony 3.2] Cloner une entité vers une autre entité
- Cloner disque dur - Guide
- Comment transferer une boite mail vers une autre - Guide
- Cloner disque dur vers ssd - Guide
- Dvd shrink 3.2 - Télécharger - Copie & Extraction
- Dvd cloner - Télécharger - Gravure