Есть ли способ определить, существует ли таблица базы данных с помощью Laravel
Я хочу иметь возможность создать таблицу, используя
Schema::create('mytable',function($table)
{
$table->increments('id');
$table->string('title');
});
Но перед этим я хотел бы проверить, существует ли уже таблица, возможно, что-то вроде
Schema::exists('mytable');
Однако вышеуказанной функции не существует. Что еще я могу использовать?
4 answers
Если вы используете Laravel 4 или 5, то есть метод hasTable()
, вы можете найти его в исходном коде L4 или в документах L5:
Schema::hasTable('mytable');
Для создания новой таблицы существует только одна проверка с помощью функции схемы Laravel hasTable
.
if (!Schema::hasTable('table_name')) {
// Code to create table
}
Но если вы хотите удалить любую таблицу, прежде чем проверять ее существование, то в схеме есть функция, называемая dropIfExists
.
Schema::dropIfExists('table_name');
Он удалит таблицу, если таблица будет существовать.
Для этого в 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'
.
Если вы получаете вывод одной строки, это означает, что таблица существует.