Может войдёшь?
Черновики Написать статью Профиль

Schema конструктор таблиц

перевод документация 3.x

Содержание

Основы

Конструктор структур предоставляет методы для создания и модификации таблиц баз данных. Используя легкий синтаксис, вы можете работать с таблицами без привлечения специальных средств SQL.

Рекомендуем прочитать:

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

Класс Schema используется для создания и удаления таблиц. Лучше посмотреть примеры:

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

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

Рассмотрим этот пример. Метод create указывает конструктору таблиц создать новую таблицу 'users', вторым аргументом посредством анонимной (закрытой) функции, которой передается объект таблицы, определяются поля и индексы таблицы.

Удаление таблицы из базы данных:

Schema::drop('users');

Удаление таблицы из данного соединения с базой данных:

Schema::drop('users', 'connection_name');

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

Определение соединения для операций:

Schema::create('users', function($table)
{
    $table->on('connection');
});

Добавление полей

Методы консруктора таблиц позволяют добавить поля без использования утилит SQL. Примеры использования:

Команда Описание
$table->increments('id'); Инкрементируемый ID
$table->string('email'); VARCHAR поле
$table->string('name', 100); VARCHAR поле с указанием длины
$table->integer('votes'); INTEGER поле
$table->float('amount'); FLOAT поле
$table->boolean('confirmed'); BOOLEAN поле
$table->date('created_at'); DATE поле
$table->timestamp('added_on'); TIMESTAMP поле
$table->timestamps(); Добавление created_at и updated_at полей
$table->text('description'); TEXT поле
$table->blob('data'); BLOB поле
->nullable() Назначение: поле может иметь значение NULL

Примечание: "Boolean" типы представляют собой SMALLINT поле применительно к СУБД.

Пример создания таблицы и добавления полей

Schema::table('users', function($table)
{
    $table->create();
    $table->increments('id');
    $table->string('username');
    $table->string('email');
    $table->string('phone')->nullable();
    $table->text('about');
    $table->timestamps();
});

Удаление полей

Удаление поля из таблицы:

$table->drop_column('name');

Удаление нескольких полей:

$table->drop_column(array('name', 'email'));

Добавление индексов

Schema конструктор поддерживает несколько типов индексов. Есть два способа добавитьь индекс. Каждый тип индекса имеет свой метод. Т.е. вы можете назначить индекс при построении таблицы:

Быстрое создание поля с индексом:

$table->string('email')->unique();

Если вам больше нравится определение индексов на отдельной строке, вот пример использования методов для каждого индекса:

Команда Описание
$table->primary('id'); Добавление первичного ключа
$table->primary(array('fname', 'lname')); Добавление составного ключа
$table->unique('email'); Добавление уникального индекса
$table->fulltext('description'); Добавление полнотекстового индекса
$table->index('state'); Добавление обычного индекса

Удаление индексов

Для удаления индекса нужно указать его имя. Laravel присваивает интуитивно понятные имена индексам. Просто соедините имя таблицы с именем индексированного поля, затем добавьте тип индекса. Например:

Команда Описание
$table->drop_primary('users_id_primary'); Удаление первичного индекса из таблицы "users"
$table->drop_unique('users_email_unique'); Удаление уникального индекса из таблицы "users"
$table->drop_fulltext('profile_description_fulltext'); Удаление полнотекстового индекса из таблицы "profile"
$table->drop_index('geo_state_index'); Удаление основного индекса из таблицы "geo"

Внешние ключи

Вы можете легко добавить внешний ключ к таблице, используя легкий интерфейс Schema конструктора. Например, предположим, у вас есть user_id в таблице posts, которая ссылается на поле id users таблицы. Следующий код показывает, как добавить внешний ключ, связанный с полем:

$table->foreign('user_id')->references('id')->on('users');

Вы также можете определить "on delete" и "on update" действия с внешним ключом:

$table->foreign('user_id')->references('id')->on('users')->on_delete('restrict');

$table->foreign('user_id')->references('id')->on('users')->on_update('cascade');

Вы можете легко удалить внешние ключи. Имена внешних ключей аналогичны разделу удаление индексов. Например:

$table->drop_foreign('posts_user_id_foreign');

Написать комментарий

Разметка: ? ?

Авторизуйся, чтобы прокомментировать.