Есть ли способ определить, существует ли таблица базы данных с помощью Laravel


Я хочу иметь возможность создать таблицу, используя

Schema::create('mytable',function($table)
{
    $table->increments('id');
    $table->string('title');
});

Но перед этим я хотел бы проверить, существует ли уже таблица, возможно, что-то вроде

Schema::exists('mytable');

Однако вышеуказанной функции не существует. Что еще я могу использовать?

 45
Author: Phill Sparks, 2013-04-11

4 answers

Если вы используете Laravel 4 или 5, то есть метод hasTable(), вы можете найти его в исходном коде L4 или в документах L5:

Schema::hasTable('mytable');
 134
Author: Phill Sparks, 2015-04-17 08:21:42

Для создания новой таблицы существует только одна проверка с помощью функции схемы Laravel hasTable.

if (!Schema::hasTable('table_name')) {
    // Code to create table
}

Но если вы хотите удалить любую таблицу, прежде чем проверять ее существование, то в схеме есть функция, называемая dropIfExists.

Schema::dropIfExists('table_name');

Он удалит таблицу, если таблица будет существовать.

 7
Author: Bhaskar Rajoriya, 2017-05-03 05:38:33

Для этого в 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 …
}
 3
Author: mckendricks, 2013-04-10 23:15:25

Скорее, полагайтесь на запрос информационной схемы, а не на проверку некоторых данных в таблицах с COUNT().

SELECT table_schema 
FROM information_schema.tables
WHERE table_schema = DATABASE()
      AND table_name = 'table_name';

Измените значение 'table_name'.

Если вы получаете вывод одной строки, это означает, что таблица существует.

 0
Author: Bimal Poudel, 2017-10-03 13:01:04