Faire évoluer les entités
Les générateurs sont formidables au jour 1 et inutiles au jour 30 quand régénérer efface vos modifications manuelles. Ici, régénérer laisse de côté les fichiers que vous avez modifiés, et --add-fields patche les entités à enrichir.
Ajouter des champs à une entité existante
php artisan make:fullapi Post --add-fields="excerpt:text,status:enum(draft,published)"
php artisan migrateCe qui se passe :
- Une migration incrémentale
Schema::table()est créée (avec un vraidown()) - Les colonnes fillable (
$fillableou#[Fillable]), les casts (casts(), ou$castsdans un modèle écrit par la 3.x) et le bloc PHPDoc du modèle existant sont patchés en place - Les règles de validation vont dans les deux requests (avec
sometimesdans celle de mise à jour), les valeurs de factory et les champs de resource à leur place - La classe enum est générée si nécessaire
- Les champs déjà existants sont ignorés ; vos méthodes personnalisées ne sont jamais touchées
Le DTO (promotion de constructeur) et les tests générés sont volontairement laissés de côté et signalés comme suivis manuels.
Vos modifications survivent à la régénération
Le générateur note ce qu'il écrit dans .api-generator/manifest.json. Committez ce fichier. Au passage suivant, tout fichier généré que vous avez modifié à la main reste tel quel, et le rapport le nomme :
kept app/Models/Post.php
! app/Models/Post.php was edited since it was generated, so it was kept. Use --force to overwrite it.Les fichiers que vous n'avez pas touchés sont rafraîchis comme d'habitude. Ajoutez --force pour écraser aussi les fichiers modifiés, ou prévisualisez tout le passage avec --dry-run. Les entités générées avant la 3.11 sont régénérées comme avant lors de leur prochain passage, puis suivies.
Régénérer des fichiers précis
Changé d'avis sur un seul artefact ? --only= réécrit uniquement les générateurs listés et laisse la migration, la route et l'enregistrement du seeder intacts. Le manifeste garde aussi la définition à partir de laquelle chaque entité a été générée, il n'y a donc rien à retaper :
php artisan make:fullapi Post --only=Resource
php artisan make:fullapi Post --only=FeatureTest,UnitTestLes relations, les valeurs d'enum, les clés étrangères, les colonnes unique et nullable et les options de génération reviennent telles quelles, comme les champs ajoutés avec --add-fields. Leurs colonnes restent dans leur propre migration.
Une entité générée avant la 4.1 n'a pas encore de définition enregistrée, la commande demande donc ses champs. Passez-les une fois, ou régénérez l'entité depuis son fichier de schéma, sa base ou son diagramme, et la définition est enregistrée à partir de là :
php artisan make:fullapi Post --fields="title:string,content:text" --only=ResourceTypes disponibles : Model, Controller, Service, DTO, Request, Resource, Migration, Factory, Seeder, Policy, FeatureTest, UnitTest.
Supprimer proprement
php artisan delete:fullapi PostSupprime chaque fichier généré, désenregistre le seeder de DatabaseSeeder.php, et retire les routes de l'entité de routes/api.php et routes/web.php. Les migrations ajoutées avec --add-fields partent aussi, puisque le manifest les connaît. Ajoutez --dry-run pour voir la liste d'abord ; la confirmation nomme aussi les fichiers modifiés à la main. Les enums et les migrations pivot restent, car d'autres entités peuvent s'en servir.
Réparer les routes orphelines
Si un fichier de routes référence encore un contrôleur supprimé (la fameuse ReflectionException de route:list), purgez les lignes orphelines :
php artisan api-generator:clean-routes --dry-runphp artisan api-generator:clean-routesL'extension VS Code propose cette réparation quand sa liste des routes échoue sur un contrôleur orphelin.
