Unsigned laravel что это

Laravel Framework Russian Community

Введение

Класс Schema представляет собой независимый от типа БД интерфейс манипулирования таблицами. Он хорошо работает со всеми БД, поддерживаемыми Laravel и предоставляет унифицированный API для любой из этих систем.

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

Для создания новой таблицы используется метод Schema::create :

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

Для указания иного использующегося подключения к БД используется метод Schema::connection :

Для удаления таблицы вы можете использовать метод Schema::drop :

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

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

Конструктор таблиц поддерживает различные типы полей:

Вставка поля после существующего (в MySQL)

Если вы используете MySQL, то при изменении таблицы вы можете указать, куда именно добавлять новое поле

Изменение полей

Так же можно указать, может ли поле быть NULL:

Переименование полей

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

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

Удаление сразу нескольких полей

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

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

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

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

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

Ниже список всех доступных типов индексов.

КомандаОписание
$table->primary(‘id’);Добавляет первичный ключ
$table->primary(array(‘first’, ‘last’));Добавляет составной первичный ключ
$table->unique(’email’);Добавляет уникальный индекс
$table->index(‘state’);Добавляет простой индекс

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

Laravel поддерживает добавление внешних ключей (foreign key constraints) для таблиц:

Вы также можете задать действия, происходящие при обновлении (on update) и добавлении (on delete) записей.

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

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

CommandDescription
$table->dropPrimary(‘users_id_primary’);Удаление первичного ключа из таблицы «users»
$table->dropUnique(‘users_email_unique’);Удаление уникального индекса на полях «email» и «password» из таблицы «users»
$table->dropIndex(‘geo_state_index’);Удаление простого индекса из таблицы «geo»

Удаление столбцов дат создания и псевдоудаления

КомандаОписания
$table->dropTimestamps();Удаление столбцов created_at и updated_at
$table->dropSoftDeletes();Удаление столбца deleted_at

Storage Engines (системы хранения)

Для задания конкретной системы хранения таблицы установите свойство engine объекта конструктора:

Источник

Laravel Framework Russian Community

Введение (Introduction)

Миграции похожи на систему контроля версиий, но только для базы данных (БД). Они позволяют команде разработчиков легко изменять схему БД приложения и делиться этими изменениями. Миграции обычно связаны с построителем схем Laravel (Laravel’s schema builder) для облегчения создания схемы БД приложения.

Laravel Schema facade предоставляет независимую от БД поддержку создания и управления таблицами. Она предоставляет выразительный API для всех поддерживаемых Laravel БД.

Создание (Generating Migrations)

Для создания миграции используйте make:migration Artisan command:

Структура миграции (Migration Structure)

Внутри обоих методов вы можете использовать конструктор схем для создания и модификации таблиц. Для изучения всех методов, доступных в конструкторе, обратитесь к документации check out its documentation. Давайте взглянем на пример миграции, которая создает таблицу flights :

Запуск миграций (Running Migrations)

Если вы получили сообщение об ошибке «class not found» во время запуска, попробуйте выполнить команду composer dump-autoload и потом вновь выполнить миграцию.

Принудительные миграции на продакшене (Forcing Migrations To Run In Production)

Некоторые операции миграции могут привести к потере данных. В целях защиты от запуска таких команд у вас будет запрашиваться подтверждение перед их выполнением. Для выполнения команд без подтверждения укажите флаг force :

Откат миграций (Rolling Back Migrations)

Команда migrate:reset отменит все миграции:

Откат/запуск миграции одной командой (Rollback / Migrate In Single Command)

Написание миграций (Writing Migrations)

Создание таблиц (Creating Tables)

Для определения столбцов таблицы вы можете использовать любые методы конструктора схем column methods.

Проверка существования таблицы/столбца (Checking For Table / Column Existence)

Проверить существует ли таблица или колонка в таблице можно методами hasTable и hasColumn :

Подключение и Движок Хранилища (Connection & Storage Engine)

Если требуется использовать подключение, отличное от дефолтного, используйте метод connection :

Для установки движка таблицы, задайте свойство engine :

Переименование/удаление таблиц (Renaming / Dropping Tables)

Создание столбцов (Creating Columns)

Доступные типы столбцов (Available Column Types)

Перечень доступных типов в классе конструкторе схемы:

Модификация столбцов (Column Modifiers)

В дополнение к типам, перечисленным выше, доступны модификаторы столбцов, которые можно использовать при добавлении столбца. Добавим столбцу возможность принимать значения NULL:

Ниже приведен список доступных модификаторов. Список не включает индексные модификаторы index modifiers:

МодификаторОписание
->first()Place the column «first» in the table (MySQL Only)
->after(‘column’)Place the column «after» another column (MySQL Only)
->nullable()Allow NULL values to be inserted into the column
->default($value)Specify a «default» value for the column
->unsigned()Set integer columns to UNSIGNED

Изменение столбцов (Modifying Columns)

Необходимые условия (Prerequisites)

Обновление атрибутов столбца (Updating Column Attributes)

Метод change меняет тип столбца либо атрибуты. Например, увеличим размер строкового столбца name с 25 до 50:

Добавить вставку значений NULL:

Примечание: Изменение столбцов с типом enum на текущий момент не поддерживается.

Переименование столбцов (Renaming Columns)

Примечание: Переименование столбцов типа enum на текущий момент не поддерживается.

Удаление столбцов (Dropping Columns)

Удаление нескольких столбцов:

Примечание: Удаление/изменение нескольких столбцов внутри одной миграции для СУБД SQLite не поддерживается.

Создание индексов (Creating Indexes)

Создание индекса для существующего столбца:

Индекс на основе нескольких столбцов:

Laravel автоматически генерирует имя индекса, но можно указать его самому во втором параметре метода:

Доступные типа индексов (Available Index Types)

КомандаОписание
$table->primary(‘id’);Add a primary key.
$table->primary([‘first’, ‘last’]);Add composite keys.
$table->unique(’email’);Add a unique index.
$table->unique(‘state’, ‘my_index_name’);Add a custom index name.
$table->index(‘state’);Add a basic index.

Удаление индексов (Dropping Indexes)

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

КомандаОписание
$table->dropPrimary(‘users_id_primary’);Удалить primary key из таблицы «users».
$table->dropUnique(‘users_email_unique’);Удалить уникальный индекс из таблицы «users».
$table->dropIndex(‘geo_state_index’);Удалить обычный индекс из таблицы «geo».

Если методу для удаления передать массив столбцов для удаления индекса, то имя индекса будет сформировано автоматически:

Ограничения внешнего ключа (Foreign Key Constraints)

Задать желаемое действие для свойств «on delete» и «on update» внешнего ключа:

При создании имени внешнего ключа используется то же соглашение о присвоении имен, что и для индексов. Laravel будет создавать имя на основе имени таблицы, столбца и суффикса «_foreign». Удаление внешнего ключа:

Удаление при задании столбца в массиве, что формирует имя удаляемого ключа автоматически:

Источник

Schema Builder

Introduction

The Laravel Schema class provides a database agnostic way of manipulating tables. It works well with all of the databases supported by Laravel, and has a unified API across all of these systems.

Creating & Dropping Tables

To create a new database table, the Schema::create method is used:

The first argument passed to the create method is the name of the table, and the second is a Closure which will receive a Blueprint object which may be used to define the new table.

To rename an existing database table, the rename method may be used:

To specify which connection the schema operation should take place on, use the Schema::connection method:

To drop a table, you may use the Schema::drop method:

Adding Columns

To update an existing table, we will use the Schema::table method:

The table builder contains a variety of column types that you may use when building your tables:

Using After On MySQL

If you are using the MySQL database, you may use the after method to specify the order of columns:

Renaming Columns

To rename a column, you may use the renameColumn method on the Schema builder. Before renaming a column, be sure to add the doctrine/dbal dependency to your composer.json file.

Note: Renaming enum column types is not supported.

Dropping Columns

To drop a column, you may use the dropColumn method on the Schema builder. Before dropping a column, be sure to add the doctrine/dbal dependency to your composer.json file.

Dropping A Column From A Database Table

Dropping Multiple Columns From A Database Table

Checking Existence

Checking For Existence Of Table

You may easily check for the existence of a table or column using the hasTable and hasColumn methods:

Checking For Existence Of Columns

Adding Indexes

The schema builder supports several types of indexes. There are two ways to add them. First, you may fluently define them on a column definition, or you may add them separately:

Or, you may choose to add the indexes on separate lines. Below is a list of all available index types:

CommandDescription
$table->primary(‘id’);Adding a primary key
$table->primary(array(‘first’, ‘last’));Adding composite keys
$table->unique(’email’);Adding a unique index
$table->index(‘state’);Adding a basic index

Foreign Keys

Laravel also provides support for adding foreign key constraints to your tables:

In this example, we are stating that the user_id column references the id column on the users table. Make sure to create the foreign key column first!

You may also specify options for the «on delete» and «on update» actions of the constraint:

To drop a foreign key, you may use the dropForeign method. A similar naming convention is used for foreign keys as is used for other indexes:

Dropping Indexes

To drop an index you must specify the index’s name. Laravel assigns a reasonable name to the indexes by default. Simply concatenate the table name, the names of the column in the index, and the index type. Here are some examples:

CommandDescription
$table->dropPrimary(‘users_id_primary’);Dropping a primary key from the «users» table
$table->dropUnique(‘users_email_unique’);Dropping a unique index from the «users» table
$table->dropIndex(‘geo_state_index’);Dropping a basic index from the «geo» table

Dropping Timestamps & SoftDeletes

CommandDescription
$table->dropTimestamps();Dropping the created_at and updated_at columns from the table
$table->dropSoftDeletes();Dropping deleted_at column from the table

Storage Engines

To set the storage engine for a table, set the engine property on the schema builder:

Источник

Laravel 8 · База данных · Миграции

Введение

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

Фасад Schema обеспечивает независимую от базы данных поддержку для создания и управления таблицами во всех поддерживаемых Laravel системах баз данных. В обычной ситуации, этот фасад используется для создания и изменения таблиц / столбцов базы данных во время миграции.

Генерация миграций

Чтобы сгенерировать новую миграцию базы данных, используйте команду make:migration Artisan. Эта команда поместит новый класс миграции в каталог database/migrations вашего приложения. Каждое имя файла миграции содержит временную метку, которая позволяет Laravel определять порядок применения миграций:

Laravel будет использовать имя миграции, чтобы попытаться угадать имя таблицы и будет ли миграция создавать новую таблицу. Если Laravel может определить имя таблицы по имени миграции, то сгенерированный файл миграции будет предварительно заполнен указанной таблицей. В противном случае вы можете просто вручную указать таблицу в файле миграции.

Сжатие миграций

По мере создания приложения вы можете со временем накапливать все больше и больше миграций. Это может привести к тому, что ваш каталог database/migrations станет раздутым из-за потенциально сотен миграций. Если хотите, то можете «сжать» свои миграции в один файл SQL. Для начала выполните команду schema:dump :

Когда вы выполните эту команду, Laravel запишет файл «схемы» в каталог database/schema вашего приложения. Теперь, когда вы попытаетесь перенести свою базу данных, Laravel сначала выполнит SQL-операторы файла схемы, при условии, что никакие другие миграции не выполнялись. После выполнения команд файла схемы, Laravel выполнит все оставшиеся миграции, которые не были включены в дамп схемы БД.

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

Сжатие миграции доступно только для баз данных MySQL, PostgreSQL и SQLite и использует клиент командной строки базы данных. Дампы схемы не могут быть восстановлены в базах данных SQLite, хранимых в памяти.

Структура миграций

Указание соединения миграции

Запуск миграций

Чтобы запустить все незавершенные миграции, выполните команду migrate Artisan:

Если вы хотите узнать, какие миграции уже выполнены, то вы можете использовать команду migrate:status Artisan:

Принудительный запуск миграции в рабочем окружении

Откат миграций

Чтобы откатить последнюю операцию миграции, вы можете использовать команду rollback Artisan. Эта команда откатывает последний «пакет» миграций, который может включать несколько файлов миграции:

Команда migrate:reset откатит все миграции вашего приложения:

Откат и миграция с помощью одной команды

Удаление всех таблиц с последующей миграцией

Команда migrate:fresh удалит все таблицы из базы данных, а затем выполнит команду migrate :

Команда migrate:fresh удалит все таблицы базы данных независимо от их префикса. Эту команду следует использовать с осторожностью при разработке в базе данных, которая используется совместно с другими приложениями.

Таблицы

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

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

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

Соединение с базой данных и параметры таблицы

Если вы хотите выполнить операцию схемы с подключением, которое не является подключением к базе данных по умолчанию для вашего приложения, используйте метод connection :

Кроме того, некоторые другие свойства и методы могут использоваться для определения других аспектов создания таблицы. Свойство engine используется для указания механизма хранения таблицы при использовании MySQL:

Свойства charset и collation могут использоваться для указания набора символов и сопоставления для создаваемой таблицы при использовании MySQL:

Метод temporary используется, чтобы указать, что таблица должна быть «временной». Временные таблицы видны только текущему сеансу соединения базы данных и автоматически удаляются при закрытии соединения:

Обновление таблиц

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

Чтобы переименовать существующую таблицу базы данных, используйте метод rename :

Чтобы удалить существующую таблицу, вы можете использовать методы drop или dropIfExists :

Переименование таблиц с внешними ключами

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

Столбцы

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

Доступные типы столбцов

Построитель схем Blueprint предлагает множество методов, соответствующих различным типам столбцов, которые вы можете добавить в таблицы базы данных. Все доступные методы перечислены в таблице ниже:

bigIncrements()

Метод bigIncrements создает эквивалент автоинкрементного столбца UNSIGNED BIGINT (первичный ключ):

bigInteger()

Метод bigInteger создает эквивалент столбца BIGINT :

binary()

Метод binary создает эквивалент столбца BLOB :

boolean()

Метод boolean создает эквивалент столбца BOOLEAN :

Метод char создает эквивалент столбца CHAR указанной длины:

dateTimeTz()

Метод dateTimeTz создает эквивалент столбца DATETIME (с часовым поясом) с необязательной точностью (общее количество цифр):

dateTime()

Метод dateTime создает эквивалент столбца DATETIME с необязательной точностью (общее количество цифр):

Метод date создает эквивалент столбца DATE :

decimal()

Метод decimal создает эквивалент столбца DECIMAL с точностью (общее количество цифр) и масштабом (десятичные цифры):

double()

Метод double создает эквивалент столбца DOUBLE с точностью (общее количество цифр) и масштабом (десятичные цифры):

Метод enum создает эквивалент столбца ENUM с указанием допустимых значений:

float()

Метод float создает эквивалент столбца FLOAT с точностью (общее количество цифр) и масштабом (десятичные цифры):

foreignId()

Метод foreignId является псевдонимом метода unsignedBigInteger :

geometryCollection()

Метод geometryCollection создает эквивалент столбца GEOMETRYCOLLECTION :

geometry()

Метод geometry создает эквивалент столбца GEOMETRY :

increments()

Метод increments создает эквивалент автоинкрементного столбца UNSIGNED INTEGER в качестве первичного ключа:

integer()

Метод integer создает эквивалент столбца INTEGER :

ipAddress()

Метод ipAddress создает эквивалент столбца INTEGER :

Метод json создает эквивалент столбца JSON :

jsonb()

Метод jsonb создает эквивалент столбца JSONB :

lineString()

Метод lineString создает эквивалент столбца LINESTRING :

longText()

Метод longText создает эквивалент столбца LONGTEXT :

macAddress()

Метод macAddress создает столбец, предназначенный для хранения MAC-адреса. Некоторые системы баз данных, такие как PostgreSQL, имеют специальный тип столбца для этого типа данных. Другие системы баз данных будут использовать столбец строкового эквивалента:

mediumIncrements()

Метод mediumIncrements создает эквивалент автоинкрементного столбца UNSIGNED MEDIUMINT в качестве первичного ключа:

mediumInteger()

Метод mediumInteger создает эквивалент столбца MEDIUMINT :

mediumText()

Метод mediumText создает эквивалент столбца MEDIUMTEXT :

morphs()

Метод morphs – это удобный метод, который добавляет эквивалент столбца UNSIGNED BIGINT ( _id ) и эквивалент столбца VARCHAR ( _type ).

Этот метод предназначен для использования при определении столбцов, необходимых для полиморфного отношения Eloquent. В следующем примере будут созданы столбцы taggable_id и taggable_type :

multiLineString()

Метод multiLineString создает эквивалент столбца MULTILINESTRING :

multiPoint()

Метод multiPoint создает эквивалент столбца MULTIPOINT :

multiPolygon()

Метод multiPolygon создает эквивалент столбца MULTIPOLYGON :

nullableTimestamps()

Метод аналогичен методу timestamps ; тем не менее, создаваемый столбец будет иметь значение NULL:

nullableMorphs()

Метод аналогичен методу morphs ; тем не менее, создаваемый столбец будет иметь значение NULL:

nullableUuidMorphs()

Метод аналогичен методу uuidMorphs ; тем не менее, создаваемый столбец будет иметь значение NULL:

point()

Метод point создает эквивалент столбца POINT :

polygon()

Метод polygon создает эквивалент столбца POLYGON :

rememberToken()

Метод set создает эквивалент столбца SET с заданным списком допустимых значений:

smallIncrements()

Метод smallIncrements создает эквивалент автоинкрементного столбца UNSIGNED SMALLINT в качестве первичного ключа:

smallInteger()

Метод smallInteger создает эквивалент столбца SMALLINT :

softDeletesTz()

softDeletes()

string()

Метод string создает эквивалент столбца VARCHAR указанной длины:

Метод text создает эквивалент столбца TEXT :

timeTz()

Метод timeTz создает эквивалент столбца TIME (с часовым поясом) с необязательной точностью (общее количество цифр):

Метод time создает эквивалент столбца TIME с необязательной точностью (общее количество цифр):

timestampTz()

Метод timestampTz создает эквивалент столбца TIMESTAMP (с часовым поясом) с необязательной точностью (общее количество цифр):

timestamp()

Метод timestamp создает эквивалент столбца TIMESTAMP с необязательной точностью (общее количество цифр):

timestampsTz()

timestamps()

Метод timestamps method creates created_at and updated_at TIMESTAMP с необязательной точностью (общее количество цифр):

tinyIncrements()

Метод tinyIncrements создает эквивалент автоинкрементного столбца UNSIGNED TINYINT в качестве первичного ключа:

tinyInteger()

Метод tinyInteger создает эквивалент столбца TINYINT :

unsignedBigInteger()

Метод unsignedBigInteger создает эквивалент столбца UNSIGNED BIGINT :

unsignedDecimal()

Метод unsignedDecimal создает эквивалент столбца UNSIGNED DECIMAL с необязательной точностью (общее количество цифр) и масштабом (десятичные цифры):

unsignedInteger()

Метод unsignedInteger создает эквивалент столбца UNSIGNED INTEGER :

unsignedMediumInteger()

Метод unsignedMediumInteger создает эквивалент столбца UNSIGNED MEDIUMINT :

unsignedSmallInteger()

Метод unsignedSmallInteger создает эквивалент столбца UNSIGNED SMALLINT :

unsignedTinyInteger()

Метод unsignedTinyInteger создает эквивалент столбца UNSIGNED TINYINT :

uuidMorphs()

Метод uuidMorphs – это удобный метод, который добавляет эквивалент столбца CHAR(36) ( _id ) и эквивалент столбца VARCHAR ( _type ).

Этот метод предназначен для использования при определении столбцов, необходимых для полиморфного отношения Eloquent, использующего идентификаторы UUID. В следующем примере будут созданы столбцы taggable_id и taggable_type :

Метод uuid создает эквивалент столбца UUID :

Метод year создает эквивалент столбца YEAR :

Модификаторы столбца

В дополнение к типам столбцов, перечисленным выше, есть несколько «модификаторов» столбцов, которые вы можете использовать при добавлении столбца в таблицу базы данных. Например, чтобы сделать столбец «допускающим значение NULL», вы можете использовать метод nullable :

В следующей таблице представлены все доступные модификаторы столбцов. В этот список не входят модификаторы индексов:

МодификаторОписание
->after(‘column’)Поместить столбец «после» другого столбца (MySQL).
->autoIncrement()Установить столбцы INTEGER как автоинкрементные (первичный ключ).
->charset(‘utf8mb4’)Указать набор символов для столбца (MySQL).
->collation(‘utf8mb4_unicode_ci’)Указать параметры сравнения для столбца (MySQL/PostgreSQL/SQL Server).
->comment(‘my comment’)Добавить комментарий к столбцу (MySQL/PostgreSQL).
->default($value)Указать значение «по умолчанию» для столбца.
->first()Поместить столбец «первым» в таблице (MySQL).
->from($integer)Установить начальное значение автоинкрементного поля (MySQL / PostgreSQL).
->nullable($value = true)Позволить (по умолчанию) значения NULL для вставки в столбец.
->storedAs($expression)Создать сохраненный генерируемый столбец (MySQL).
->unsigned()Установить столбцы INTEGER как UNSIGNED (MySQL).
->useCurrent()Установить столбцы TIMESTAMP для использования CURRENT_TIMESTAMP в качестве значения по умолчанию.
->useCurrentOnUpdate()Установить столбцы TIMESTAMP для использования CURRENT_TIMESTAMP при обновлении записи.
->virtualAs($expression)Создать виртуальный генерируемый столбец (MySQL).
->generatedAs($expression)Создать столбец идентификаторов с указанными параметрами последовательности (PostgreSQL).
->always()Определить приоритет значений последовательности над вводом для столбца идентификаторов (PostgreSQL).

Выражения для значений по умолчанию

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

Порядок столбцов

Метод after добавляет набор столбцов после указанного существующего столбца в схеме базы данных MySQL:

Изменение столбцов

Необходимые компоненты

Перед изменением столбца вы должны установить пакет doctrine/dbal с помощью менеджера пакетов Composer. Библиотека Doctrine DBAL используется для определения текущего состояния столбца и для создания запросов SQL, необходимых для внесения запрошенных изменений в столбец:

Обновление атрибутов столбца

Метод change позволяет вам изменять тип и атрибуты существующих столбцов. Например, вы можете увеличить размер string столбца. Чтобы увидеть метод change в действии, давайте увеличим размер столбца name до 50. Для этого мы просто определяем новое состояние столбца и затем вызываем метод change :

Мы также можем изменить столбец, чтобы он допускал значение NULL:

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

Чтобы переименовать столбец, вы можете использовать метод renameColumn построителя схемы Blueprint. Перед переименованием столбца убедитесь, что вы установили библиотеку doctrine/dbal через менеджер пакетов Composer:

Переименование enum столбца в настоящее время не поддерживается.

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

Чтобы удалить столбец, вы можете использовать метод dropColumn построителя схемы Blueprint. Если ваше приложение использует базу данных SQLite, то вы должны установить библиотеку doctrine/dbal через менеджер пакетов Composer, прежде чем использовать метод dropColumn :

Вы можете удалить несколько столбцов из таблицы, передав массив имен столбцов методу dropColumn :

Удаление или изменение нескольких столбцов в рамках одной миграции при использовании базы данных SQLite не поддерживается.

Доступные псевдонимы команд

Laravel содержит несколько удобных методов, связанных с удалением общих типов столбцов. Каждый из этих методов описан в таблице ниже:

Индексы

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

Построитель схем Laravel поддерживает несколько типов индексов. В следующем примере создается новый столбец email и указывается, что его значения должны быть уникальными. Чтобы создать индекс, мы можем связать метод unique с определением столбца:

В качестве альтернативы вы можете создать индекс после определения столбца. Для этого вы должны вызвать метод unique построителя схемы Blueprint. Этот метод принимает имя столбца, который должен получить уникальный индекс:

Вы даже можете передать массив столбцов методу индекса для создания составного индекса:

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

Доступные типы индексов

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

КомандаОписание
$table->primary(‘id’);Добавить первичный ключ.
$table->primary([‘id’, ‘parent_id’]);Добавить составной ключ.
$table->unique(’email’);Добавить уникальный индекс.
$table->index(‘state’);Добавляет простой индекс.
$table->spatialIndex(‘location’);Добавляет пространственный индекс (кроме SQLite).

Длина индекса и MySQL / MariaDB

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

Переименование индексов

Чтобы переименовать индекс, вы можете использовать метод renameIndex построителя схемы Blueprint. Этот метод принимает текущее имя индекса в качестве первого аргумента и желаемое имя в качестве второго аргумента:

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

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

Если вы передадите массив столбцов в метод, удаляющий индексы, то обычное имя индекса будет сгенерировано на основе имени таблицы, столбцов и типа индекса:

Ограничения внешнего ключа

Поскольку этот синтаксис довольно подробный, Laravel предлагает дополнительные, более сжатые методы, использующие соглашения, для повышения продуктивности разработки. Пример выше можно переписать так:

Вы также можете указать желаемое действие для свойств ограничения «при удалении» и «при обновлении»:

Любые дополнительные модификаторы столбца должны быть вызваны перед методом constrained :

Удаление внешних ключей

Переключение ограничений внешнего ключа

Вы можете включить или отключить ограничения внешнего ключа в своих миграциях, используя следующие методы:

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

Источник

Добавить комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *