Laravel迁移:2个具有相同蓝图/结构的不同表

时间:2019-09-02 01:23:37

标签: php mysql laravel migration

我需要2个MySQL表,例如:electronBvar ATest = function(...args) { if (args.length !== 2) { throw new Error('Two arguments required: atom and electron'); } const [atom, electron] = args; this.atom = atom; this.electron = electron; } 具有完全相同的结构,

history表用于从history_archive表中移动项目,并在其中减少行以便在history_archive表中进行更快的查询(而不仅仅是将它们标记为在同一表中已归档)

我想到要进行2次迁移,但是这2个表在它们之间移动时必须完全相同,我不认为复制/粘贴每列都是一个好主意!

这里的最佳做法是什么?

我知道以下可能性:

history

但是我的问题是:我如何只编写一次蓝图/构造并将其传递给两个history(并且有两个名称不同但结构相同的表)< / p>

我需要的是这样的东西(不起作用):

Schema::create('history', function (Blueprint $table) {
    $table->increments('id');
    $table->unsignedInteger('user_id');
    // ... extra columns 
});

// Exactly the same structure as above
Schema::create('history_archive', function (Blueprint $table) {
    $table->increments('id');
    $table->unsignedInteger('user_id');
    // I don't want to copy paste every column from history table here...
});

1 个答案:

答案 0 :(得分:3)

您可以在同一迁移中创建许多表。如果所有表的结构都完全相同,并且您不想复制粘贴每一列,那么我认为您可以执行以下操作:

$tables = ['history', 'history_archive'];
foreach($tables as $tablename) {
    Schema::create($tablename, function (Blueprint $table) {
        $table->increments('id');
        $table->unsignedInteger('user_id');
        // ... extra columns 
    });
}