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/migrations
Migrator automatically searches classes with namespace Blog\Migrations
in that directory.
php artisan migrate --bench=foo/bar
Migrator 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.