Laravel 4 is not support namespaces in migration classes, but it is not a problem ;)
#Installation
- Use Composer to install package into your project:
composer require "ed-fruty/laravel4-namespace-migrator": "1.0.0"- Add the service provider in
app/config/app.php:
'Fruty\LaravelNamespaceMigrator\LaravelNamespaceMigratorServiceProvider',- Publish package configuration
php artisan config:publish ed-fruty/laravel4-namespace-migrator#Usage
When you call migrations like ```bash php artisan migrate --path=app/Modules/Blog/Migrations ``` Migrator automatically searches classes with namespace `App\Modules\Blog\Migrations` in `app/Modules/Blog/Migrations` To change default values, edit configuration file `app/config/packages/ed-fruty/laravel4-namespace-migrator/main.php` block `default` For reserving namespace for some path, edit configuration file `app/config/packages/ed-fruty/laravel4-namespace-migrator/main.php`. Example:'reserved' => [
base_path('app/modules/Blog/migrations') => 'Blog\\Migrations\\',
]It means, when you call migrations like:
php artisan migrate --path=app/modules/Blog/migrationsMigrator automatically searches classes with namespace Blog\Migrations in that directory.
php artisan migrate --bench=foo/barMigrator searches classes with namespace Foo\Bar\Migrations in workbench/foo/bar/src/migrations
So if workbench namespace does not equal to vendor/package name you must register it in 'reserved' block like:
base_path('workbench/foo/bar/src/migrations') => 'VendorNamespace\\PackageNamespace\\'php artisan migrate
By default configs, Migrator firstly searches migration classes with namespace App\database\migrations in app/database/migrations and if it does not exists, Migrator tries to load class without namespace from that catalog.