Это выполнимо довольно логично, по крайней мере, в Laravel 5
Подкласс MigrationCreator
и переопределить getStubPath()
, просто скопировав функцию из исходного класса (он будет использовать ваш подкласс __DIR__
)
<?php
namespace App\Database;
use Illuminate\Database\Migrations\MigrationCreator;
class AppMigrationCreator extends MigrationCreator
{
public function getStubPath()
{
return __DIR__.'/stubs';
}
}
Записать поставщика услуг для переопределения migration.creator
с вашим собственным подклассом (он должен быть отложенным поставщиком услуг, потому что вы не можете переопределить отложенную привязку с нетерпением):
<?php
namespace App\Database;
use Illuminate\Support\ServiceProvider;
class AppMigrationServiceProvider extends ServiceProvider
{
protected $defer = true;
public function register()
{
$this->app->singleton('migration.creator', function ($app) {
return new AppMigrationCreator($app['files']);
});
}
public function provides()
{
return ['migration.creator'];
}
}
Добавьте своего поставщика услуг в config/app.php
по умолчанию.
Наконец, скопируйте vendor/laravel/framework/src/Illuminate/Database/Migrations/stubs
рядом с подклассом MigrationCreator (в этом примере он станет app/Database/stubs
) и отредактирует шаблоны для ваших нужд.
Сохраните имена DummyClass
и DummyTable
, поскольку они будут заменены на str_replace()
, чтобы создать фактические файлы миграции.