Ci-dessous, les différences entre deux révisions de la page.
Les deux révisions précédentes Révision précédente Prochaine révision | Révision précédente | ||
symfony4:database_renommer_entite [2020/05/23 06:00] marclebrun [Renommer la classe de l'Entité] |
— (Version actuelle) | ||
---|---|---|---|
Ligne 1: | Ligne 1: | ||
- | ====== Renommer une entité ====== | ||
- | |||
- | Dans cet exemple, on renomme l'entité **Personne** en **Individu**. | ||
- | |||
- | ===== Renommer la table dans la base de données ===== | ||
- | |||
- | Générer une nouvelle migration vide : | ||
- | |||
- | <code bash> | ||
- | php bin/console doctrine:migrations:generate | ||
- | </code> | ||
- | |||
- | Ajouter le code dans les fonctions **up()** et **down()** de la migration : | ||
- | |||
- | <code php> | ||
- | public function up(Schema $schema) : void | ||
- | { | ||
- | // this up() migration is auto-generated, please modify it to your needs | ||
- | $this->abortIf($this->connection->getDatabasePlatform()->getName() !== 'mysql', 'Migration can only be executed safely on \'mysql\'.'); | ||
- | $this->addSql('RENAME TABLE personne TO individu'); | ||
- | } | ||
- | |||
- | public function down(Schema $schema) : void | ||
- | { | ||
- | // this down() migration is auto-generated, please modify it to your needs | ||
- | $this->abortIf($this->connection->getDatabasePlatform()->getName() !== 'mysql', 'Migration can only be executed safely on \'mysql\'.'); | ||
- | $this->addSql('RENAME TABLE individu TO personne'); | ||
- | } | ||
- | </code> | ||
- | |||
- | ^ :!: Ne pas appliquer cette migration tout de suite... ^ | ||
- | |||
- | ===== Renommer la classe de l'Entité ===== | ||
- | |||
- | Renommer le fichier **src/Entity/Personne.php** en **src/Entity/Individu.php**. | ||
- | |||
- | Éditer le fichier en modifiant toutes les instances de **Personne** : | ||
- | * Nom de la **classe** | ||
- | * Nom du **Repository** | ||
- | * Nom de l'entité dans les **relations** au sein des autres entités (champs OneToMany, ManyToMany, ...) | ||
- | |||
- | <code php /src/Entity/Individu.php> | ||
- | |||
- | ... | ||
- | |||
- | /** | ||
- | * @ORM\Entity(repositoryClass="App\Repository\IndividuRepository") | ||
- | */ | ||
- | class Individu | ||
- | { | ||
- | ... | ||
- | } | ||
- | </code> | ||
- | |||
- | ===== Renommer la classe de Repository ===== | ||
- | |||
- | Renommer le fichier **src/Repository/PersonneRepository.php** en **src/Repository/IndividuRepository.php**. | ||
- | |||
- | Éditer le fichier en modifiant toutes les instances de **Personne** : | ||
- | * Nom de l'**entité** utilisée | ||
- | * Nom de la **classe** | ||
- | * Référence de la classe entité dans le **contructeur** | ||
- | * Annotations, types des paramètres et fonctions | ||
- | |||
- | <code php src/Repository/IndividuRepository.php> | ||
- | ... | ||
- | |||
- | use App\Entity\Individu; | ||
- | |||
- | ... | ||
- | |||
- | class IndividuRepository extends ServiceEntityRepository | ||
- | { | ||
- | public function __construct(ManagerRegistry $registry) | ||
- | { | ||
- | parent::__construct($registry, Individu::class); | ||
- | } | ||
- | |||
- | // MODIFIER AUSSI TOUTES LES ANNOTATIONS ET LES TYPES INDIQUÉS | ||
- | // COMME PARAMÈTRES OU VALEURS DE RETOUR DES FONCTIONS. | ||
- | | ||
- | } | ||
- | </code> | ||
- | |||
- | ===== Modifier les contrôleurs, templates, formulaires, ... ===== | ||
- | |||
- | Remplacer **Personne** par **Individu** dans tous les contrôleurs où la classe est utilisée. | ||
- | |||
- | S'il y a des templates qui utilisent l'ancien nom de l'entité, les modifier également. | ||
- | |||
- | ===== Modifier les fixtures ===== | ||
- | |||
- | Si elle existe, renommer la classe **PersonneFixtures** en **IndividuFixtures**. | ||
- | |||
- | Remplacer **Personne** par **Individu** dans les autres fixtures où la classe est utilisée. | ||
- | |||
- | ===== Appliquer la migration ===== | ||
- | |||
- | <code bash> | ||
- | php bin/console doctrine:migrations:migrate | ||
- | </code> | ||
- | |||
- | ===== Vider le cache de Symfony ===== | ||
- | |||
- | <code bash> | ||
- | php bin/console cache:clear | ||
- | </code> | ||
- | |||