【问题标题】:Using Artisan::call() to run package migrations使用 Artisan::call() 运行包迁移
【发布时间】:2014-12-17 02:06:37
【问题描述】:

我需要为我正在编写的一些单元测试迁移我的数据库架构,其中一个迁移包含在一个包中。通常,我会从命令行运行以下命令:

php artisan migrate --package=tappleby/laravel-auth-token

要在代码中运行我自己的迁移,我会这样做:

Artisan::call('migrate');

但是,我似乎无法让 Artisan 从内部代码运行包迁移。我试过这个:

Artisan::call('migrate --package=tappleby/laravel-auth-token');

但这会导致未知的命令错误。我也试过这些:

Artisan::call('migrate', '--package=tappleby/laravel-auth-token');
Artisan::call('migrate', ['--package=tappleby/laravel-auth-token']);
Artisan::call('migrate', ['package=tappleby/laravel-auth-token']);

以上都不起作用。在我的代码中运行包迁移的正确方法是什么?

【问题讨论】:

    标签: php laravel laravel-4 database-migration


    【解决方案1】:

    我相信正确的语法对命令参数使用关联数组,其中项目键是参数的名称,项目值是参数的值。这应该适用于您的情况:

    Artisan::call('migrate', ['--package' => 'tappleby/laravel-auth-token']);
    

    【讨论】:

    • 要么是那个,要么是一个简单的参数数组,比如Artisan::call('migrate', ['--package', 'tappleby/laravel-auth-token']);
    【解决方案2】:

    我用--path做到了:

    Artisan::call('migrate', ['--path' => 'vendor/systeminc/laravel-admin/src/database/migrations']);
    

    【讨论】:

      猜你喜欢
      • 2017-08-08
      • 2019-06-30
      • 2018-12-06
      • 2015-08-28
      • 2017-01-06
      • 2020-08-16
      • 2019-02-24
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多