5

好吧,我确实有一个包,我只与我的系统一起使用。我确实有那个包的迁移(它是在 Laravel 4.2 上构建的,我正在升级它)。

话虽这么说:在我的 Laravel 5.1 包(以前的工作台)上,我在哪里放置以及如何运行我的迁移?

你们有谁知道如何处理这个问题吗?

更新

这不是简单迁移的情况。回到 laravel 4.*,我们能够维护每个包的迁移(如果需要的话),而且我确实有一些迁移由我自己的包保存,在它自己的数据库中,有它自己的表。所以...我需要它是PACKAGE的迁移,而不是ROOT INSTALATION的迁移。

4

3 回答 3

4

你可以把它放进去packages/.../src/migrations。要运行它:

  1. 您可以插入 composer.json :

"autoload": { "classmap": [ "database", "packages/.../src/migrations" ],

  1. 或者只是打电话:

    • Laravel 4.xphp artisan migrate --package="{vendor}/{name}"
    • Laravel 5.xphp artisan migrate --path=/packages/.../migrations

更多信息:查看来自 websanova.com 的博客

于 2017-10-12T16:04:22.900 回答
1

Laravel 5.6+ 的更新答案

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");.

于 2018-05-24T00:05:21.660 回答
-1

创建一个migration

  1. 转到command prompt您的项目根文件夹并运行以下命令:php artisan make:migration yourMigrationFileName --create=tableName
  2. 您可以在以下位置找到您的迁移文件yourProjectFolder\database\migrations\timestamp_yourMigrationFileName.php
  3. 创建你的表。

运行migration

  1. 转到command prompt您的项目根文件夹并运行以下命令:php artisan migrate

并且不要忘记在您的Model. protected $table = 'tableName'您可以通过在模型中编写来做到这一点。

于 2015-11-23T14:50:24.823 回答