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