@@ -15,8 +15,6 @@ This tool provides a structured and extensible approach to reverse-engineering d
1515migration files. It supports foreign key constraints, correct dependency order, and customizable mapping logic –
1616enabling seamless integration into both legacy and modern Laravel projects (Laravel 5–12 supported).
1717
18- ---
19-
2018## ✨ Features
2119
2220- ✅ Detects tables, columns, indexes, and foreign keys with precision
@@ -25,8 +23,6 @@ enabling seamless integration into both legacy and modern Laravel projects (Lara
2523- 🧩 Supports Laravel 5 to 12 (EOL versions maintained in read-only mode)
2624- 🛠 Clean, testable, and maintainable codebase
2725
28- ---
29-
3026## 📊 Version Compatibility
3127
3228| Laravel/Lumen | PHP Version | Generator Version | Status |
@@ -42,16 +38,12 @@ enabling seamless integration into both legacy and modern Laravel projects (Lara
4238
4339> ⚠️ EOL versions are not actively developed but remain functional for legacy compatibility.
4440
45- ---
46-
4741## ⚙ Requirements
4842
4943- PHP ≥ 8.2
5044 - ` pdo_mysql ` extension
5145- MySQL ≥ 5.7
5246
53- ---
54-
5547## 🧰 Installation
5648
5749Install the package via Composer:
@@ -68,8 +60,6 @@ For **Lumen**, register the service provider manually in `bootstrap/app.php`:
6860$app->register(\N3XT0R\MigrationGenerator\Providers\MigrationGeneratorServiceProvider::class);
6961```
7062
71- ---
72-
7363## 🚀 Usage
7464
7565Run the migration generator via Artisan:
@@ -81,8 +71,6 @@ php artisan migrate:regenerate
8171This command will generate migration files from your existing MySQL schema into the ` database/migrations/ ` folder. The
8272files will be ordered automatically to maintain referential integrity – no manual reordering required.
8373
84- ---
85-
8674## ⚙️ Custom Export Strategy
8775
8876If the default export does not meet your needs, the generator is fully extensible. You can override the export logic
@@ -98,8 +86,6 @@ php artisan vendor:publish --tag=migration-generator-config
9886
9987Edit ` config/migration-generator.php ` to adjust or override definitions and mappings.
10088
101- ---
102-
10389## 🧩 Export Architecture
10490
10591The export process is divided into two customizable layers:
@@ -114,8 +100,6 @@ Laravel and can be reused, extended, or mapped differently.
114100These classes transform the internal representation into ** valid Laravel migration code** (PHP). You can override them
115101to adjust formatting, naming conventions, or structure.
116102
117- ---
118-
119103## 🧪 Testing
120104
121105To run the tests:
@@ -126,21 +110,57 @@ To run the tests:
126110
127111Docker and CI pipelines are already integrated for continuous validation and quality assurance.
128112
129- ---
113+ ## ✅ CI Test Matrix
114+
115+ This package is continuously tested across multiple Laravel and PHP versions to ensure full compatibility and
116+ reliability.
117+
118+ | Laravel Version | PHP Versions | Database |
119+ | -----------------| ---------------| -----------|
120+ | 10 | 8.2, 8.3 | MySQL 5.7 |
121+ | 11 | 8.2, 8.3, 8.4 | MySQL 5.7 |
122+ | 12 | 8.2, 8.3, 8.4 | MySQL 5.7 |
123+
124+ CI is powered by GitHub Actions and includes:
125+
126+ - Multiple Laravel versions via dynamic ` composer require `
127+ - PHPUnit 10/11 support (auto-detected per version)
128+ - Full code coverage with Clover reports (Xdebug enabled)
129+ - Version-aware tests (e.g., different table sets for Laravel 10 vs. 11+)
130+
131+ ### ℹ️ Composer Compatibility Strategy
132+
133+ Although the root ` composer.json ` targets Laravel 12 by default, earlier Laravel versions (10, 11) are tested in CI
134+ using dynamic version installation:
135+
136+ ``` yaml
137+ run : composer require laravel/framework:^${{ matrix.laravel }} --no-interaction --no-update
138+ ` ` `
139+
140+ This ensures flexible version handling while keeping the default installation aligned with the latest stable Laravel
141+ release.
142+
143+ ### 🧪 Version-Aware Assertions
144+
145+ Table-based tests (e.g., migration sorting or detection) dynamically adjust expected values based on the Laravel
146+ version:
147+
148+ ` ` ` php
149+ $expectedTables = match (true) {
150+ str_starts_with(Application::VERSION, '10.') => [...],
151+ default => [...], // Laravel 11+
152+ };
153+ ```
130154
131155## 📄 License
132156
133157This project is licensed under the [ MIT License] ( LICENSE ) .
134158
135- ---
136-
137159## 🙌 Contributions
138160
139161Contributions are welcome! Feel free to open issues or submit pull requests to improve the generator, add new database
140162support (e.g., PostgreSQL), or enhance the customization layers.
141163
142- ---
143-
144164## 🔗 Links
145165
146166- 📦 [ Packagist Package] ( https://packagist.org/packages/n3xt0r/laravel-migration-generator )
0 commit comments