使用 Artisan 调用 php artisan 迁移

Posted

技术标签:

【中文标题】使用 Artisan 调用 php artisan 迁移【英文标题】:Call php artisan migrate using Artisan 【发布时间】:2019-06-30 22:26:42 【问题描述】:

是否可以为

创建 Artisan 调用或命令
php artisan migrate

点赞Artisan::call('migrate);

所以我可以在动态更改连接时将丢失的表迁移到我的数据库中。

  Config::set('database.connections.dynamicdb', array(
        'driver'    => 'mysql', 
         'host'      => '127.0.0.1',
         'database'  =>  $database_name,
         'username'  =>  'test_user',
         'password'  =>  '123456',
         'charset'   => 'utf8mb4',
         'collation' => 'utf8mb4_unicode_ci',
         'strict'    => false,
         'options'   => [                                
               \PDO::ATTR_EMULATE_PREPARES => true
            ]
       ));

  Artisan::call('migrate');

或者有没有办法为它创建一个命令?请提出一些解决方案。

【问题讨论】:

您回答了自己的问题 - Artisan::call('migrate')。你试过吗?你有问题吗? 它不起作用。我的是 laravel 5.6 定义“它不起作用”。发生什么了?您遇到什么错误或行为? 页面是否“挂起”并坐在那里?如果这是在生产中,您可能需要传递--force;见***.com/questions/37953783/…。 您可能还需要告诉它执行--database dynamicdb。您继续说“不起作用”,但没有说明发生了什么——无论您收到错误、永无止境的加载指示符,还是就像成功一样继续。 【参考方案1】:

试试这个代码:

\Artisan::call('migrate',
 array(
   '--path' => 'database/migrations',
   '--database' => 'dynamicdb',
   '--force' => true));

因为我的默认设置采用 /app 作为路径,并且迁移被放置在数据库/迁移中。因此,这将在创建新项目时对我有用。

【讨论】:

以上是关于使用 Artisan 调用 php artisan 迁移的主要内容,如果未能解决你的问题,请参考以下文章

为啥 Laravel 总是在每个 Artisan 命令中调用 schedule()?

使用不同的 .env 从其他 Artisan 命令调用 Artisan 命令

使用php artisan命令的URL :: asset()为我提供了localhost链接

php artisan:调用未定义函数 App\Http\Services\mcrypt_get_block_size()

PHP 致命错误:在第 1 行 Laravel Artisan Tinker 的 eval() 代码中调用未定义函数 table()

如何手动使用 composer, artisan ...(Laravel) php 命令