РЕПЕТИТОР математика физика информатика
Для школьников и студентов. Подтягивание пробелов. ЦЭ, ЦТ, ОГЭ, ЕГЭ.
Идет набор на ЛЕТО. Жмите для подробностей:)
356 of 1392 menu

Класс Schema

Класс Schema предоставляет фасад для работы с схемой базы данных в Laravel. Он позволяет создавать новые таблицы, изменять существующие, удалять таблицы и проверять их наличие. Все методы класса возвращают результат операции или булево значение в случае проверок.

Создание таблицы

<?php use IlluminateDatabaseMigrationsMigration; use IlluminateDatabaseSchemaBlueprint; use IlluminateSupportFacadesSchema; return new class extends Migration { public function up() { Schema::create('posts', function (Blueprint $table) { $table->id(); $table->string('title'); $table->text('body'); $table->integer('views')->default(0); $table->boolean('is_published')->default(false); $table->timestamps(); }); } public function down() { Schema::dropIfExists('posts'); } }; ?>

Результат выполнения кода:

"Table posts created successfully"

Изменение существующей таблицы

<?php use IlluminateDatabaseMigrationsMigration; use IlluminateDatabaseSchemaBlueprint; use IlluminateSupportFacadesSchema; return new class extends Migration { public function up() { Schema::table('posts', function (Blueprint $table) { $table->text('description')->nullable(); $table->string('category')->nullable(); }); } public function down() { Schema::table('posts', function (Blueprint $table) { $table->dropColumn(['description', 'category']); }); } }; ?>

Результат выполнения кода:

"Table posts updated successfully"

Проверка существования таблицы

Метод hasTable проверяет, существует ли таблица в базе данных:

<?php namespace AppHttpControllers; use IlluminateSupportFacadesSchema; class TableController extends Controller { public function check() { $res = Schema::hasTable('posts'); echo $res ? 'Table exists' : 'Table does not exist'; } } ?>

Результат выполнения кода:

"Table exists"

Проверка существования колонки

Метод hasColumn проверяет наличие указанной колонки в таблице:

<?php namespace AppHttpControllers; use IlluminateSupportFacadesSchema; class TableController extends Controller { public function checkColumn() { $res = Schema::hasColumn('posts', 'description'); echo $res ? 'Column exists' : 'Column does not exist'; } } ?>

Результат выполнения кода:

"Column exists"

Удаление таблицы

Метод drop удаляет указанную таблицу из базы данных:

<?php use IlluminateDatabaseMigrationsMigration; use IlluminateSupportFacadesSchema; return new class extends Migration { public function up() { Schema::drop('posts'); } public function down() { Schema::create('posts', function (Blueprint $table) { $table->id(); $table->string('title'); $table->timestamps(); }); } }; ?>

Результат выполнения кода:

"Table posts dropped successfully"

Удаление таблицы с проверкой существования

Метод dropIfExists удаляет таблицу только если она существует, что предотвращает ошибки:

<?php use IlluminateDatabaseMigrationsMigration; use IlluminateSupportFacadesSchema; return new class extends Migration { public function up() { Schema::dropIfExists('posts'); } public function down() { Schema::create('posts', function (Blueprint $table) { $table->id(); $table->string('title'); $table->timestamps(); }); } }; ?>

Результат выполнения кода:

"Table posts dropped successfully if existed"

Переименование таблицы

Метод rename позволяет переименовать существующую таблицу:

<?php use IlluminateDatabaseMigrationsMigration; use IlluminateSupportFacadesSchema; return new class extends Migration { public function up() { Schema::rename('posts', 'articles'); } public function down() { Schema::rename('articles', 'posts'); } }; ?>

Результат выполнения кода:

"Table renamed successfully"

Создание таблицы с условием существования

Метод createIfNotExists создаёт таблицу, только если она ещё не существует:

<?php namespace AppHttpControllers; use IlluminateSupportFacadesSchema; use IlluminateDatabaseSchemaBlueprint; class TableController extends Controller { public function createIfNotExists() { if (!Schema::hasTable('articles')) { Schema::create('articles', function (Blueprint $table) { $table->id(); $table->string('title'); $table->text('content'); $table->timestamps(); }); echo 'Table created'; } else { echo 'Table already exists'; } } } ?>

Результат выполнения кода:

"Table created"

Смотрите также

  • класс Blueprint,
    который используется для определения структуры таблицы
  • метод create,
    который создаёт новую таблицу в базе данных
  • метод table,
    который используется для изменения существующей таблицы
  • метод hasTable,
    который проверяет существование таблицы
Мы используем cookie для работы сайта, аналитики и персонализации. Обработка данных происходит согласно Политике конфиденциальности.
принять все настроить отклонить