Таблицы и столбцы

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

Для создания таблиц используется команда:

php artisan make:migration create_articles_table

Где articles - имя создаваемой таблицы.

Изменение таблиц

Для изменения существующей таблицы необходимо создать новую миграцию с флагом table={название таблицы}

php artisan make:migration adding_new_collumns  table=articles

При этом будет создана новая миграция с названием adding_new_collumns для таблицы articles

Файлы миграций хранятся в папке database/migrations

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

Для добавления новых столбцов в таблице создаем новую миграцию для изменения таблицы, как было показано выше.

В файле созданной миграции в методе up добавляем новые поля

 public function up()
    {
        Schema::table('articles', function (Blueprint $table) {
            $table->string('views');
		
			
        });
    }

После этого запускаем миграции php artisan migrate

Имена, типы и дополнительные свойства колонок

Для указания типа, дополнительных свойств и дополнительных параметров используется следующий синтаксис:

$table->string('views', 40)->nullable()

Здесь в таблицу будет добавлена колонка с типом text, длиной до 40 символов, по умолчанию NULL

Кодировка таблицы

Для указания кодировки таблицы при ее создании используется следующий код:

Schema::create('users', function (Blueprint $table) {
    $table->charset = 'utf8mb4';
    $table->collation = 'utf8mb4_unicode_ci';

    // ...
});

Создание первичного индекса таблицы

$table->bigIncrements('article_id');;

Значение столбца по умолчанию

Для задания значения столбца по умолчанию используется метод default()

Создание индексов

Создание единичного индекса:

$table->index('article_id');

Создание индекса для нескольких полей:

$table->index(['article_id', 'title']);

Изменение таблий и колонок

Для изменения колонок используется метод change()

Если вы его запускаете первый раз, то скорее всего получите ошибку:

[Doctrine\DBAL\DBALException] Unknown database type enum requested, Doctrine\DBAL\Platforms\MySqlPlatform may not support it.

Она означает, что в системе отсутствует библиотека Doctrine DBAL, которая необходима для определения текущего состояния столбца.

Установить ее можно следующей командой:

composer require doctrine/dbal

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

Schema::rename($from, $to);

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

Schema::drop('articles');

Schema::dropIfExists('articles');

Добавление внешних ключей

Для добавления внешних ключей используется следующий синтаксис:

Schema::table('articles', function (Blueprint $table) {
    $table->unsignedBigInteger('author_id');
    $table->foreign('author')->references('id')->on('authors');
});

Удаление вшешнего ключа

$table->dropForeign(['author_id']);