我在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不存在,有没有办法创建表?
答案 0 :(得分:46)
试试这个
if (!Schema::hasTable('tblCategory')) {
// create the tblCategory table
}
答案 1 :(得分:6)
要创建一个新表,Laravel Schema函数hasTable
只能进行一次检查。
但是如果你想在检查它存在之前删除任何表,那么Schema有一个名为dropIfExists
的函数。
Schema::dropIfExists('table_name');
如果表存在,它将删除表。
答案 2 :(得分:0)
DB::transaction(function () {
// Create your table here with schema builder.
});
如果在事务Closure中抛出异常,则事务将自动回滚。因此,尝试创建已存在的表将引发错误。大多数数据库事务都应该在Laravel中有这个闭包。