php - lentas - laravel check if table exists
¿Hay alguna manera de detectar si existe una tabla de base de datos con Laravel (4)
Quiero ser capaz de crear una tabla usando
Schema::create(''mytable'',function($table)
{
$table->increments(''id'');
$table->string(''title'');
});
Pero antes me gustaría comprobar si la tabla ya existe, tal vez algo así como
Schema::exists(''mytable'');
Sin embargo, la función anterior no existe. ¿Qué más puedo usar?
Más bien, dependa de la consulta del esquema de información en lugar de verificar algunos datos en las tablas con COUNT()
.
SELECT table_schema
FROM information_schema.tables
WHERE table_schema = DATABASE()
AND table_name = ''table_name'';
Cambie su valor ''table_name''
.
Si obtienes una salida de fila, significa que la tabla existe.
No hay función incorporada para esto en L3. Puedes hacer una consulta sin procesar:
$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 …
}
Para crear una nueva tabla, solo hay una hasTable
Laravel Schema función hasTable
.
if (!Schema::hasTable(''table_name'')) {
// Code to create table
}
Pero si desea eliminar cualquier tabla antes de verificar su existencia, entonces Schema tiene una función llamada dropIfExists
.
Schema::dropIfExists(''table_name'');
Soltará la tabla si existirá la tabla.
Si está utilizando Laravel 4 o 5, existe el método hasTable()
, puede encontrarlo en el código fuente L4 o en los documentos L5 :
Schema::hasTable(''mytable'');