如何在laravel中为特定环境运行迁移

due*_*lsy 22 php laravel

我正在使用laravel(Laravel 4)设置一个新的应用程序,并且在通过迁移设置数据库时遇到一些问题.

我制作了一个迁移文件:

artisan migrate:make --table="jobs" --create jobs
Run Code Online (Sandbox Code Playgroud)

它按照预期在数据库/迁移中创建了一个文件,我为此做了一些修改,然后使用它来启动它

artisan migrate --env=local
Run Code Online (Sandbox Code Playgroud)

但是我收到了回复 "Nothing to migrate"

如果我尝试不运行--env=local,它使用我们不想使用的config文件夹(不在本地/ staging/production文件夹中)中的database.php,因为它不是特定于环境的.

我的第一个想法是好的,也许我需要在migrate:make调用上放置env标志,所以我尝试了,但是得到一个错误,说它无法创建迁移文件.然后我认为无论如何都要进行基于env的迁移是没有意义的...它们应该是通用的,并且只是基于每个env运行,所以最后,所有环境都使用相同的迁移脚本.

所以我现在有点卡在这里去哪里

Jas*_*wis 30

您需要在migrate命令之前指定环境.

artisan --env=local migrate
Run Code Online (Sandbox Code Playgroud)

运行artisan help显示命令要遵循的格式.

artisan help

Usage:
  [options] command [arguments]
Run Code Online (Sandbox Code Playgroud)

  • 遗憾的是,这没有任何影响...仍然收到“无迁移”消息 (3认同)

hun*_*eox 5

我找到了一个migrate针对不同数据库运行的解决方案。基本上,该命令artisan migrate --env=local不起作用。但我们可以在 中定义一个新的连接字符串config\database.php。例如:

<?php
   'mysql_testing' => [
        'driver'    => 'mysql',
        'host'      => env('DB_TESTING_HOST'),
        'database'  => env('DB_TESTING_DATABASE'),
        'username'  => env('DB_TESTING_USERNAME'),
        'password'  => env('DB_TESTING_PASSWORD'),
        'charset'   => 'utf8',
        'collation' => 'utf8_unicode_ci',
        'prefix'    => 'prefix_',
    ],
Run Code Online (Sandbox Code Playgroud)

并指定--database我们运行的时间artisan migrate

php artisan migrate --database=mysql_testing
Run Code Online (Sandbox Code Playgroud)

希望这可以帮助 :)