Konfiguracja
Laravel pozwala w łatwy sposób współpracować z popularnymi bazami danych takimi jak MySQL, PostgreSQL, SQLite i SQL Server.
W pierwszej kolejności musimy skonfigurować połączenie z bazą danych. Konfiguracja połączenia znajduje się w pliku config/database.php
, który pobiera wartości z pliku .env
znajdującym się w głównym katalogu. Domyślnie klucze te są skonfigurowane pod użycie środowiska deweloperskiego Homestead.
DB_CONNECTION=mysql
DB_HOST=127.0.0.1
DB_PORT=3306
DB_DATABASE=homestead
DB_USERNAME=homestead
DB_PASSWORD=secret
W razie potrzeby możemy je oczywiście dopasować do naszej konfiguracji.
Migracje
Pliki z migracjami zawierają instrukcję do stworzenia tabel w bazie danych, które będą potrzebne w aplikacji. Możemy oczywiście stworzyć te tabele ręcznie, ale dzięki mechanizmowi migracji zachowujemy informację o tabelach w repozytorium i łatwo możemy je odtworzyć na innej maszynie.
Najłatwiejszym sposobem na utworzenie pliku migracji jest użycie Artisana, czyli CLI Laravela. Wpiszmy w terminalu:
php artisan make:migration create_posts_table --create=posts
W katalogu database/migrations
pojawi się nowy plik o nazwie podobnej do tej: 2018_07_03_120000_create_posts_table.php
. Nazwa każdego pliku migracji zaczyna się od daty i godziny, co pozwala Laravelowi ustalić kolejność ich wykonywania przy tworzeniu tabel w bazie danych. To co nas interesuje w pliku migracji to treść metody up()
:
public function up()
{
Schema::create('posts', function (Blueprint $table) {
$table->increments('id');
$table->timestamps();
});
}
Wykonanie tej migracji spowoduje utworzenie w bazie danych tabeli o nazwie posts
z trzema kolumnami.
- Kolumna o nazwie
id
typu UNSIGNED INTEGER z AUTO_INCREMENT. Innymi słowy klucz podstawowy tabeli. Utworzona przez metodęincrements
. - Kolumny
created_at
iupdated_at
, obie typu TIMESTAMP. Utworzone przez metodętimestamps
. Gdy będziemy zapisywać modele za pomocą Eloquenta, wartości tych dwóch kolumn będą się uzupełniać automatycznie. Więcej o Eloquencie w jednym z następnych postów.
Chociaż nie są wymagane, w większości przypadków będziemy chcieli mieć te trzy kolumny w każdej tabeli.
W tabeli posts
chcemy przechowywać informację o tytule i treści wpisu. Zmodyfikujmy zatem treść metody up()
w następujący sposób:
public function up()
{
Schema::create('posts', function (Blueprint $table) {
$table->increments('id');
$table->string('title');
$table->text('body');
$table->timestamps();
});
}
Instrukcja $table->string('title')
stworzy kolumnę typu VARCHAR(255) o nazwie title
w naszej tabeli. Podobnie, instrukcja $table->text('body')
doda kolumnę typu TEXT o nazwie body
w naszej tabeli.
Pełny wykaz dostępnych metod znajdziemy w dokumentacji.
Nasz plik z migracją tabeli posts
jest gotowy. Zmigrujmy zatem bazę danych. W terminalu wpiszmy:
php artisan migrate
Ta komenda dodała naszą tabelę do bazy danych.
W tej części tutoriala dowiedzieliśmy się jak skonfigurować połączenie z bazą danych oraz czym są migracje i jak je pisać. W następnej części nauczymy się pobierać, wstawiać, edytować i usuwać rekordy z bazy danych.