我希望能够使用创建表
Schema::create('mytable',function($table)
{
$table->increments('id');
$table->string('title');
});
但在此之前,我想检查表是否已经存在,也许像
Schema::exists('mytable');
但是,以上功能不存在。我还能使用什么?
我希望能够使用创建表
Schema::create('mytable',function($table)
{
$table->increments('id');
$table->string('title');
});
但在此之前,我想检查表是否已经存在,也许像
Schema::exists('mytable');
但是,以上功能不存在。我还能使用什么?
Answers:
call_user_func_array() expects parameter 1 to be a valid callback, class 'Illuminate\Database\MySqlConnection' does not have a method 'hasTable'
,我用DB::hasTable('test')
是因为找不到Schema类。
DB::getSchemaBuilder()->hasTable('table_name_without_prefix')
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 …
}
而是依赖于信息模式查询,而不是使用来检查表中的某些数据COUNT()
。
SELECT table_schema
FROM information_schema.tables
WHERE table_schema = DATABASE()
AND table_name = 'table_name';
改变你的'table_name'
价值。
如果输出一行,则表示该表存在。