Dodaj nową kolumnę do istniejącej tabeli podczas migracji
Naprawdę nie mogę dowiedzieć się, jak dodać nową kolumnę do mojej tabeli wyjścia w mojej bazie danych przy użyciu PHP Laravel framework.
Próbowałem edytować plik migracji do
public function up()
{
Schema::create('users', function($table){
$table->integer("paid");
});
}
Oraz w Terminalu php artisan migrate:install
i migrate
Jak dodać nowe kolumny?
8 answers
Aby utworzyć migrację, możesz użyć polecenia migrate:make W Artisan CLI. Użyj konkretnej nazwy, aby uniknąć zderzenia z istniejącymi modelami
Dla Laravel 3:
php artisan migrate:make add_paid_to_users
Dla Laravel 5+:
php artisan make:migration add_paid_to_users
Następnie musisz użyć metody Schema::table()
(ponieważ uzyskujesz dostęp do istniejącej tabeli, a nie tworzysz nową). I możesz dodać taką kolumnę:
public function up()
{
Schema::table('users', function($table) {
$table->integer('paid');
});
}
I nie zapomnij dodać opcji rollback:
public function down()
{
Schema::table('users', function($table) {
$table->dropColumn('paid');
});
}
Wtedy możesz uruchomić swój migracje:
php artisan migrate
To wszystko jest dobrze opisane w dokumentacji dla obu Laravel 3:
I dla Laravel 4 / Laravel 5:
Edit:
Użyj $table->integer('paid')->after(whichever_column);
, aby dodać To pole po określonej kolumnie.
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2016-06-24 11:52:24
Dodam do odpowiedzi mike3875 dla przyszłych czytelników korzystających z Laravel 5.1 i dalej.
Aby przyspieszyć, możesz użyć flagi "--table " w następujący sposób:
php artisan make:migration add_paid_to_users --table="users"
Spowoduje to automatyczne dodanie zawartości metody up
i down
:
/**
* Run the migrations.
*
* @return void
*/
public function up()
{
Schema::table('users', function (Blueprint $table) {
//
});
}
Podobnie, możesz użyć opcji --create["table_name"]
podczas tworzenia nowych migracji, które dodadzą więcej boilerplate do Twoich migracji. Mały punkt, ale pomocny przy robieniu ich wielu!
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2016-02-12 14:29:50
Jeśli używasz Laravel 5, komenda będzie;
php artisan make:migration add_paid_to_users
Wszystkie polecenia do tworzenia rzeczy (Kontrolery, modele, migracje itp.) zostały przeniesione pod make:
.
php artisan migrate
to wciąż to samo.
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2015-04-09 11:38:57
Możesz dodać nowe kolumny w początkowej metodzie Schema::create
w następujący sposób:
Schema::create('users', function($table) {
$table->integer("paied");
$table->string("title");
$table->text("description");
$table->timestamps();
});
Jeśli już utworzyłeś tabelę, możesz dodać do niej dodatkowe kolumny, tworząc nową migrację i używając metody Schema::table
:
Schema::table('users', function($table) {
$table->string("title");
$table->text("description");
$table->timestamps();
});
Dokumentacja jest dość dokładna i nie zmieniła się zbytnio z w wersji 3 na w wersji 4 .
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2013-05-28 12:26:44
Możesz po prostu zmodyfikować istniejący plik migracji, na przykład dodając kolumnę w tabeli, a następnie w terminalu wpisując:
$ php artisan migrate:refresh
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2017-08-17 14:01:42
Laravel 5.6
W przypadku, gdy chcesz dodać nową kolumnę jako klucz obcy do istniejącej tabeli.
Utwórz nową migrację wykonując następujące polecenie: make: migration
Przykład:
php artisan make:migration add_store_id_to_users_table --table=users
W folderze database / migrations masz nowy plik migracji, coś w stylu:
2018_08_08_093431_add_store_id_to_users_table.php (Zobacz komentarze)
<?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');
});
}
}
Następnie uruchom polecenie :
php artisan migrate
Jeśli chcesz cofnąć ostatnią migrację z jakiegokolwiek powodu, uruchom to polecenie:
php artisan migrate:rollback
Więcej informacji na temat migracji można znaleźć w docs
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2018-08-08 10:34:58
To działa na laravel 5.1.
Najpierw na twoim terminalu wykonaj ten kod
php artisan make:migration add_paid_to_users --table=users
Następnie przejdź do katalogu projektu i rozwiń bazę katalogów-migracja i edycja pliku add_paid_to_users.php, dodaj ten kod
public function up()
{
Schema::table('users', function (Blueprint $table) {
$table->string('paid'); //just add this line
});
}
Następnie wróć do terminala i wykonaj to polecenie
php artisan migrate
Mam nadzieję, że to pomoże.Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2018-01-27 11:26:29
Najpierw wycofaj poprzednią migrację
php artisan migrate:rollback
Następnie możesz zmodyfikować istniejący plik migracji (dodać nowe , zmienić nazwę lub usunąć kolumny), a następnie ponownie uruchomić plik migracji
php artisan migrate
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2018-09-26 06:52:24