在Laravel代码中运行工匠而无需在表迁移中创建迁移记录

时间:2018-08-14 19:38:37

标签: php laravel artisan

我的函数中有这段代码,用于运行文件夹中的所有迁移文件,以便在新数据库中动态创建新表。但是,每次运行它时,它都会在表migration中创建一条新记录,这是正常的。但是,下次我再次运行该功能时,将排除迁移文件,因为它们以前已经运行过。

如何强制它不向“迁移”表中写入任何内容?因为我不希望这成为部署的一部分。这些表用于创建新的租户客户端。

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

2 个答案:

答案 0 :(得分:0)

更好地了解目标之后,听起来好像您希望在事件发生时创建其他表。

为此,您只需要使用“架构”构建器来做到这一点,而避免完全使用迁移。考虑以下示例:

use Illuminate\Support\Facades\Schema;
use Illuminate\Database\Schema\Blueprint;

Schema::create('new_table_name', function (Blueprint $table) {
    $table->increments('id');
    // additional columns
    $table->timestamps();
    $table->softDeletes();
});

您可以将其包装在新的类方法中,以在想要创建其他表而不影响迁移时触发。

如果您希望以后放一个表,可以运行:

Schema::dropIfExists('new_table_name');

答案 1 :(得分:0)

看起来我可以使用选项--pretend来转储所有查询,而无需编写迁移批处理

Options:
      ...
      --pretend              Dump the SQL queries that would be run.
      ...