====== 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 :
php bin/console doctrine:migrations:generate
Ajouter le code dans les fonctions **up()** et **down()** de la migration :
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');
}
^ :!: 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 la classe dans les **relations** au sein des autres entités (champs OneToMany, ManyToMany, ...)
* Y compris dans les fonctions **getters** et **setters**
...
/**
* @ORM\Entity(repositoryClass="App\Repository\IndividuRepository")
*/
class Individu
{
...
}
===== 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
...
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.
}
===== 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 =====
php bin/console doctrine:migrations:migrate
===== Vider le cache de Symfony =====
php bin/console cache:clear