Я не могу понять, как добавить новый столбец в существующую таблицу базы данных с помощью фреймворка Laravel.
Я попытался отредактировать файл миграции, используя...
<?php
public function up()
{
Schema::create('users', function ($table) {
$table->integer("paid");
});
}
В терминале я выполняю команды php artisan migrate:install
и migrate
.
Как мне добавить новые колонки?
Для создания миграции вы можете использовать команду migrate:make в Artisan CLI. Используйте конкретное имя, чтобы избежать столкновения с существующими моделями
для Laravel 3:
php artisan migrate:make add_paid_to_users
для Laravel 5+:
php artisan make:migration add_paid_to_users_table --table=users
Затем вам нужно использовать метод Schema::table()
(поскольку вы обращаетесь к существующей таблице, а не создаете новую). И вы можете добавить столбец следующим образом:
public function up()
{
Schema::table('users', function($table) {
$table->integer('paid');
});
}
и не забудьте добавить опцию отката:
public function down()
{
Schema::table('users', function($table) {
$table->dropColumn('paid');
});
}
После этого вы можете запускать миграции:
php artisan migrate
Все это хорошо описано в документации по Laravel 3:
И для Laravel 4 / Laravel 5:
Редактировать:
используйте $table->integer('paid')->after('whichever_column');
для добавления этого поля после определенного столбца.
Я'МР приплюсовать к mike3875'ы ответ для будущих читателей, используя фреймворк Laravel 5.1 и старше.
Чтобы сделать вещи быстрее, вы можете использовать флаг " и--таблица, что" такой:
php artisan make:migration add_paid_to_users --table="users"
Это позволит добавить "вверх" и "вниз" метод контент автоматически:
/**
* Run the migrations.
*
* @return void
*/
public function up()
{
Schema::table('users', function (Blueprint $table) {
//
});
}
Кроме того, вы можете использовать `--создать["и имя_таблицы" и вариант, когда создание новых миграций, который будет добавить больше стандартного на свой миграций. Мелочь, но полезно, когда делаешь их много!
Если вы используете Laravel 5, команда будет выглядеть следующим образом;
php artisan make:migration add_paid_to_users
Все команды для создания вещей (контроллеров, моделей, миграций и т.д.) были перенесены под команду make:
.
Хотя команда php artisan migrate
осталась прежней.
5.6 фреймворк Laravel # и выше
Создать новый миграции, выполнив следующую команду : производитель:миграции
Пример :
php artisan make:migration add_store_id_to_users_table --table=users
В базу данных/папку новый файл миграции, что-то типа миграций :
2018_08_08_093431_add_store_id_to_users_table.php (см. комментарии)
<?php
use Illuminate\Support\Facades\Schema;
use Illuminate\Database\Schema\Blueprint;
use Illuminate\Database\Migrations\Migration;
class AddStoreIdToUsersTable extends Migration
{
/**
* Run the migrations.
*
* @return void
*/
public function up()
{
Schema::table('users', function (Blueprint $table) {
// 1. Create new column
// You probably want to make the new column nullable
$table->integer('store_id')->unsigned()->nullable()->after('password');
// 2. Create foreign key constraints
$table->foreign('store_id')->references('id')->on('stores')->onDelete('SET NULL');
});
}
/**
* Reverse the migrations.
*
* @return void
*/
public function down()
{
Schema::table('users', function (Blueprint $table) {
// 1. Drop foreign key constraints
$table->dropForeign(['store_id']);
// 2. Drop the column
$table->dropColumn('store_id');
});
}
}
После этого выполните команду :
php artisan migrate
В случае, если вы хотите отменить последнее миграции по какой-либо причине, выполните эту команду :
php artisan migrate:rollback
Вы можете найти более подробную информацию о миграции в документации
Вы можете добавить новые колонки в исходном методе Schema::create
следующим образом:
Schema::create('users', function($table) {
$table->integer("paied");
$table->string("title");
$table->text("description");
$table->timestamps();
});
Если вы уже создали таблицу, вы можете добавить дополнительные колонки в эту таблицу, создав новую миграцию и используя метод Schema::table
:
Schema::table('users', function($table) {
$table->string("title");
$table->text("description");
$table->timestamps();
});
Документация по этому вопросу достаточно подробна и не слишком изменилась с версии 3 до версии 4.
вы можете просто изменить ваш существующий файл миграции, например добавить столбец в таблицу, а затем в терминале введите :
$ php artisan migrate:refresh
это все работает на фреймворк Laravel 5.1.
во-первых, на вашем терминале выполнить этот код
php artisan make:migration add_paid_to_users --table=users
после этого перейдите в папку проекта и расширения базы данных - миграция и редактирования файлов add_paid_to_users.php добавьте этот код
public function up()
{
Schema::table('users', function (Blueprint $table) {
$table->string('paid'); //just add this line
});
}
после этого вернуться в свой терминал и выполните эту команду
php artisan migrate
надеюсь, что это поможет.
Первый откат предыдущей миграции
php artisan migrate:rollback
После этого, вы можете модифицировать ваш существующий файл миграции (добавлять новые , переименовывать или удалять столбцы) повторно запустить миграцию файл
php artisan migrate
Хотя файла переноса является наилучшей практикой, как уже упоминалось, в крайнем случае можно также добавить столбец с Тинкер.
$ с PHP ремесленника повозиться
Здесь'ы пример один-вкладыш для терминала:
в PHP Схемы::настольный('пользователей', функция(\осветить\базы данных\схема\план $таблица){ $таблица->целое число('и#39;); })
<БР>
<БР>
(Здесь он отформатирован для удобства чтения)
в PHP Схемы::настольный('пользователей', функция(\осветить\базы данных\схема\план $таблица){ $таблица->целое число('и#39;); });