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

时间:2016-02-17 20:58:21

标签: php laravel-5.1 laravel-5.2

我在Schema Builder中使用下面的代码来创建表。

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

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

如果使用Schema builder不存在,有没有办法创建表?

3 个答案:

答案 0 :(得分:46)

试试这个

if (!Schema::hasTable('tblCategory')) {
     // create the tblCategory table
}

答案 1 :(得分:6)

Please check the answer here

要创建一个新表,Laravel Schema函数hasTable只能进行一次检查。

但是如果你想在检查它存在之前删除任何表,那么Schema有一个名为dropIfExists的函数。

Schema::dropIfExists('table_name');

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

答案 2 :(得分:0)

DB::transaction(function () {
        // Create your table here with schema builder.
});

如果在事务Closure中抛出异常,则事务将自动回滚。因此,尝试创建已存在的表将引发错误。大多数数据库事务都应该在Laravel中有这个闭包。

https://laravel.com/docs/5.6/database