Database schema automation: reverse engineering da schema a codice, generazione automatica di modelli/migrazioni/factory, monitoraggio differenze schema-codice, query logging e analisi.
Il modulo DbForge automatizza le operazioni sul database: genera modelli, migrazioni e factory partendo dallo schema esistente (reverse engineering), monitora le differenze tra lo schema fisico e il codice, e fornisce strumenti per il logging e l'analisi delle query.
// Reverse engineering: da tabella a modello + migrazione + factory
app(GenerateModelAction::class)->execute(
table: 'lime_surveys',
module: 'Limesurvey',
connection: 'limesurvey',
);
// Genera: LimeSurvey.php, create_lime_surveys_table.php, LimeSurveyFactory.php
// Schema guard: trova differenze tra DB e codice
app(SchemaGuardAction::class)->execute('user');
// -> ['missing_columns' => [...], 'extra_indexes' => [...]]| Modello | Funzione |
|---|---|
| DbForgeBackup | Record backup database con metadati |
| DbForgeMigration | Tracking migrazioni generate |
| Action | Funzione |
|---|---|
| GenerateModelAction | Genera modello Eloquent da tabella esistente |
| GenerateMigrationAction | Genera migrazione da schema |
| GenerateFactoryAction | Genera factory da colonne tabella |
| SchemaGuardAction | Confronta schema fisico con codice |
| TableIndexAction | Gestisce indici via classi modello |
| QueryLogAction | Logging e analisi query |
| ExtractFieldNamesAction | Estrae nomi colonne da tabella |
| CheckColumnAction | Verifica esistenza colonna |
// Da una tabella esistente genera tutto il codice necessario
// 1. Modello con fillable, casts, relazioni base
// 2. Migrazione con schema completo
// 3. Factory con faker appropriato per tipo colonna
// Esempio: tabella con colonne varchar, integer, datetime, json
// -> TextInput, Number, DateTimePicker, JsonColumn
// -> fake()->name(), fake()->randomNumber(), fake()->dateTime(), json_encode([])// Monitora differenze tra schema fisico e codice
// Utile dopo aggiornamenti, merge di branch, o migrazioni mancanti
$diff = app(SchemaGuardAction::class)->execute('quaeris');
// [
// 'missing_in_code' => ['new_column_added_manually'],
// 'missing_in_db' => ['column_in_migration_not_migrated'],
// 'type_mismatches' => ['price: decimal(8,2) vs float'],
// ]DbForge ──> Limesurvey (reverse engineering tabelle lime_*)
DbForge ──> Quaeris (generazione modelli survey)
DbForge ──> Xot (estende XotBaseMigration)
php artisan module:enable DbForge
php artisan migrate| Metrica | Valore |
|---|---|
| Modelli | 2 |
| Azioni | 8 |
| PHPStan Level | 10 |
Module Type: Database Automation Architecture: Reverse engineering, schema guard, query analysis Quality: PHPStan Level 10
Dal database al codice e viceversa: generazione automatica, monitoraggio schema, analisi query.