Nie mogę wymyślić, jak dodać nową kolumnę do mojej istniejącej tabeli bazy danych przy użyciu środowiska Laravel.
Próbowałem edytować plik migracji za pomocą ...
<?php
public function up()
{
Schema::create('users', function ($table) {
$table->integer("paid");
});
}
W terminalu wykonuję php artisan migrate:install
i migrate
.
Jak dodać nowe kolumny?
php
laravel
laravel-4
laravel-migrations
Kim Larsen
źródło
źródło
Odpowiedzi:
Aby utworzyć migrację, możesz użyć polecenia migrate: make w interfejsie CLI Artisan. Użyj konkretnej nazwy, aby uniknąć kolizji z istniejącymi modelami
dla Laravel 3:
dla Laravel 5+:
Następnie musisz użyć tej
Schema::table()
metody (podczas uzyskiwania dostępu do istniejącej tabeli, a nie tworzenia nowej). Możesz dodać taką kolumnę:i nie zapomnij dodać opcji wycofania:
Następnie możesz uruchomić migracje:
Wszystko to jest dobrze opisane w dokumentacji zarówno Laravela 3:
A dla Laravel 4 / Laravel 5:
Edytować:
użyj,
$table->integer('paid')->after('whichever_column');
aby dodać to pole po określonej kolumnie.źródło
php artisan migrate
php artisan make:migration add_paid_to_users
Dodam do odpowiedzi mike3875 dla przyszłych czytelników używających Laravel 5.1 i nowszych.
Aby przyspieszyć, możesz użyć flagi „--table” w następujący sposób:
Spowoduje to automatyczne dodanie treści
up
idown
metody:Podobnie możesz użyć tej
--create["table_name"]
opcji podczas tworzenia nowych migracji, które dodadzą więcej podstaw do twoich migracji. Mały punkt, ale pomocny, gdy robi się ich mnóstwo!źródło
Blueprint
dodano w Laravel 5.1. Tylko kwestia wyjaśnienia jest wszystkim.Jeśli używasz Laravela 5, polecenie brzmiałoby;
Wszystkie polecenia tworzenia rzeczy (kontrolery, modele, migracje itp.) Zostały przeniesione pod
make:
polecenie.php artisan migrate
jest wciąż taki sam.źródło
laravel 5.6 i wyżej
w przypadku, gdy chcesz dodać nową kolumnę jako KLUCZ ZAGRANICZNY do istniejącej tabeli.
Utwórz nową migrację, wykonując to polecenie: make :igration
Przykład:
W folderze bazy danych / migracji masz nowy plik migracji, na przykład:
2018_08_08_093431_add_store_id_to_users_table.php (zobacz komentarze)
Następnie uruchom polecenie:
Jeśli chcesz cofnąć ostatnią migrację z jakiegokolwiek powodu, uruchom następującą komendę:
Więcej informacji na temat migracji można znaleźć w dokumentach
źródło
Możesz dodać nowe kolumny w ramach
Schema::create
metody początkowej , jak to:Jeśli już utworzyłeś tabelę, możesz dodać do niej dodatkowe kolumny, tworząc nową migrację i używając
Schema::table
metody:Dokumentacja jest dość dokładna i nie zmieniła się zbytnio od wersji 3 do wersji 4 .
źródło
create_users_table
, a następnie, jeśli Dodaję kolumny:add_email_password_columns_to_users
.add_
czasownika „ ” z przodu każdego pliku, aby śledzić zmiany. w ten sposób łatwiej jest śledzić zmiany kontroli wersji itp., ponieważ dla każdej iteracji tworzony jest nowy plik dodawania. Jeśli po prostu poszedłeś i ciągle modyfikowałeś „create_
”, trudno byłoby wiedzieć, że x pracownik, coś pomieszał, usuwając indeks lub dodając nową kolumnę itp., Przynajmniej to ma sens w mojej głowie! :)możesz po prostu zmodyfikować istniejący plik migracji, na przykład dodając kolumnę do tabeli, a następnie wpisując w terminalu:
źródło
to działa na laravel 5.1.
najpierw uruchom na swoim terminalu ten kod
następnie przejdź do katalogu projektu i rozwiń bazę danych katalogu - migruj i edytuj plik add_paid_to_users.php, dodaj ten kod
potem wróć do terminala i wykonaj to polecenie
Mam nadzieję, że to pomoże.
źródło
Najpierw przywróć poprzednią migrację
Następnie możesz zmodyfikować istniejący plik migracji (dodać nowy, zmienić nazwę lub usunąć kolumny), a następnie ponownie uruchomić plik migracji
źródło
Chociaż plik migracji to najlepsza praktyka, jak wspomnieli inni, w mgnieniu oka można również dodać kolumnę z majstrować.
Oto przykładowy jeden wiersz dla terminala:
(Tutaj jest sformatowany dla czytelności)
źródło