架构生成器:如果不存在,则创建表

2022-08-30 10:43:19

我在架构生成器中使用下面的代码来创建表。

Schema::create('tblCategory', function (Blueprint $table) {
    $table->increments('CategoryID');
    $table->string('Category', 40);
    $table->unique('Category', 'tblCategory_UK_Category');
    $table->timestamps();
});

问题是,如果我必须创建新表,则所有旧脚本都会运行并显示该表已经存在的错误。

有没有办法使用架构生成器创建表(如果不存在)?


答案 1

试试这个

if (!Schema::hasTable('tblCategory')) {
     Schema::create('tblCategory', function($table){
            $table->engine = 'InnoDB';
            $table->increments('CategoryID');
            $table->string('Category', 40);
            $table->unique('Category', 'tblCategory_UK_Category');
            $table->timestamps();
    }
}

答案 2

请在此处查看答案

要创建新表,只有一个检查 Laravel Schema 函数 。hasTable

但是,如果要在检查其是否存在之前删除任何表,则 Schema 有一个名为 .dropIfExists

Schema::dropIfExists('table_name');

如果表存在,它将删除表。


推荐