Я не могу понять, как добавить новый столбец в мою существующую таблицу базы данных, используя инфраструктуру Laravel.
Я пытался редактировать файл миграции, используя ...
<?php
public function up()
{
Schema::create('users', function ($table) {
$table->integer("paid");
});
}
В терминале я выполняю php artisan migrate:install
и migrate
.
Как добавить новые столбцы?
php
laravel
laravel-4
laravel-migrations
Ким Ларсен
источник
источник
Ответы:
Для создания миграции вы можете использовать команду migrate: make в CLI Artisan. Используйте конкретное имя, чтобы избежать конфликтов с существующими моделями
для Laravel 3:
для Laravel 5+:
Затем вам нужно использовать
Schema::table()
метод (поскольку вы получаете доступ к существующей таблице, а не создаете новую). И вы можете добавить столбец, как это:и не забудьте добавить опцию отката:
Затем вы можете запустить свои миграции:
Все это хорошо описано в документации к Laravel 3:
И для Laravel 4 / Laravel 5:
Редактировать:
используйте
$table->integer('paid')->after('whichever_column');
для добавления этого поля после определенного столбца.источник
php artisan migrate
php artisan make:migration add_paid_to_users
Я добавлю ответ mike3875 для будущих читателей, использующих Laravel 5.1 и выше.
Чтобы ускорить процесс, вы можете использовать флаг "--table" следующим образом:
Это добавит
up
иdown
содержание метода автоматически:Точно так же вы можете использовать эту
--create["table_name"]
опцию при создании новых миграций, которые добавят больше шаблонов к вашим миграциям. Небольшое замечание, но полезно при выполнении множества из них!источник
Blueprint
был добавлен в Laravel 5.1. Просто уточнение это все.Если вы используете Laravel 5, команда будет;
Все команды для создания объектов (контроллеры, модели, миграции и т. Д.) Были перенесены под
make:
команду.php artisan migrate
все еще то же самое, хотя.источник
Ларавелла 5.6 и выше
в случае, если вы хотите добавить новый столбец как FOREIGN KEY к существующей таблице.
Создайте новую миграцию, выполнив эту команду: make: миграция
Пример :
В папке базы данных / миграции у вас есть новый файл миграции, что-то вроде:
2018_08_08_093431_add_store_id_to_users_table.php (см. Комментарии)
После этого запустите команду:
Если по какой-либо причине вы хотите отменить последнюю миграцию, выполните следующую команду:
Вы можете найти больше информации о миграции в документации
источник
Вы можете добавить новые столбцы в начальный
Schema::create
метод следующим образом:Если вы уже создали таблицу, вы можете добавить в нее дополнительные столбцы, создав новую миграцию и используя
Schema::table
метод:В документации достаточно подробно об этом, и она не сильно изменилась с версии 3 до версии 4 .
источник
create_users_table
, то если я добавляю столбцов:add_email_password_columns_to_users
.add_
глагол " " перед каждым файлом, чтобы отслеживать изменения. таким образом, легче отслеживать изменения для контроля версий и т. д., поскольку для каждой итерации создается новый файл добавления. Если бы вы просто пошли и продолжали изменять "create_
", было бы трудно понять, что сотрудник x испортил что-то, удалив индекс, или добавив новый столбец и т. Д. И т. Д., По крайней мере, это имеет смысл в моей голове! :)Вы можете просто изменить существующий файл миграции, например, добавив столбец в таблицу, а затем набрав в терминале:
источник
это работает на laravel 5.1.
во-первых, на вашем терминале выполните этот код
после этого перейдите в каталог вашего проекта и разверните базу данных каталога - перенесите и отредактируйте файл add_paid_to_users.php, добавьте этот код
после этого вернитесь в свой терминал и выполните эту команду
надеюсь, это поможет.
источник
Первый откат вашей предыдущей миграции
После этого вы можете изменить существующий файл миграции (добавить новые, переименовать или удалить столбцы), а затем повторно запустить файл миграции.
источник
Несмотря на то, что, как уже упоминали другие, лучше всего использовать файл переноса, в крайнем случае вы также можете добавить столбец с тинкером.
Вот пример одной строки для терминала:
(Здесь он отформатирован для удобства чтения)
источник