好吧,我确实有一个包装,我只和我的系统一起使用。我确实有该软件包的迁移(它是在Laravel 4.2上构建的,我正在升级它)。
话虽如此:在Laravel 5.1的我的软件包(以前的工作台)上,我在哪里放置以及如何运行我的迁移?
你们有谁知道怎么处理这个吗?
更新:
这不是简单迁移的情况。回到laravel 4. *,我们能够维护每个包的迁移(如果它是如此可取),并且我确实有一些迁移由我自己的包保存,在它自己的数据库中,使用它自己的表。所以......我需要它作为PACKAGE的迁移,而不是ROOT INSTALATION的迁移。
你可以把它放在packages/.../src/migrations
。要运行它:
"autoload": {
"classmap": [
"database",
"packages/.../src/migrations"
],
php artisan migrate --package="{vendor}/{name}"
Laravel 5.x php artisan migrate --path=/packages/.../migrations
有关更多信息:请查看this blog from websanova.com
https://laravel.com/docs/5.6/packages#migrations说:
如果您的程序包包含数据库迁移,则可以使用loadMigrationsFrom方法通知Laravel如何加载它们。 loadMigrationsFrom方法接受包的迁移路径作为其唯一参数:
/**
* Perform post-registration booting of services.
*
* @return void
*/
public function boot()
{
$this->loadMigrationsFrom(__DIR__.'/path/to/migrations');
}
一旦您的包的迁移已经注册,它们将在执行php artisan migrate命令时自动运行。您无需将它们导出到应用程序的主数据库/迁移目录。
正斜杠很重要。在我的情况下,我使用:$this->loadMigrationsFrom(__DIR__ . "/migrations");
。
要创建一个migration
:
command prompt
找到您的项目根文件夹并运行此命令:php artisan make:migration yourMigrationFileName --create=tableName
yourProjectFolder\database\migrations\timestamp_yourMigrationFileName.php
中找到您的迁移文件要运行migration
:
command prompt
找到您的项目根文件夹并运行此命令:php artisan migrate
并且不要忘记在Model
中声明您的表名。您可以通过在模型中编写protected $table = 'tableName'
来实现。