有没有什么办法,如果数据库表与Laravel
的存在是为了检测我希望能够创建一个使用有没有什么办法,如果数据库表与Laravel
Schema::create('mytable',function($table)
{
$table->increments('id');
$table->string('title');
});
但在这之前,我想检查表已经存在,或许有点像表
Schema::exists('mytable');
但是,上述功能不存在。我还能使用什么?
此功能在L3中没有内置功能。你可以做一个原始查询:
$table = "foo";
$check = DB::only('SELECT COUNT(*) as `exists`
FROM information_schema.tables
WHERE table_name IN (?)
AND table_schema = database()',$table);
if(!$check) // No table found, safe to create it.
{
// Schema::create …
}
谢谢!我正在使用Laravel 3. – 2013-04-12 17:04:18
这不是跨数据库类型完全交叉兼容的。例如,它不适用于Sqlite或Oracle。 – Benubird 2015-01-26 14:12:21
相反,依赖于信息模式查询,而不是使用COUNT()
检查表中的某些数据。
SELECT table_schema
FROM information_schema.tables
WHERE table_schema = DATABASE()
AND table_name = 'table_name';
更改您的'table_name'
值。
如果您得到一行输出,则表示该表存在。
要创建一个新表,只有一个Laravel Schema函数hasTable
的检查。
if (!Schema::hasTable('table_name')) {
// Code to create table
}
但是如果你想检查它的存在之前将降大任于是表架构有一个叫做dropIfExists
功能。
Schema::dropIfExists('table_name');
如果表格存在,它将删除表格。
你能告诉你什么文件你添加了这段代码吗? – 2017-06-10 01:17:13