Bismillah.
Pada kesempatan kali ini saya akan membahas tentang bagaimana mengatur konfigurasi Laravel dengan postgresql. Tidak hanya itu, di bagian akhir dari tulisan ini juga akan dicontohkan membuat tabel baru dengan migration dan membuat data dummy untuk memberikan gambaran lebih detil tentang laravel dan postgresql.
Apa yang dibutuhkan?
Pertama yang dibutuhkan adalah tentu saja anda menginstall PostgreSQL server. Jika anda menggunakan arch linux, anda bisa membaca tutorial jagongoding yang lain tentang Cara Menginstall PostgreSQL 11 di Arch Linux.
Selanjutnya, karena kita akan menginstall laravel. Maka kita juga membutuhkan semua yang dibutuhkan oleh Laravel.
1. Install Laravel
Langkah pertama install laravel. Buka terminal anda dan jalankan perintah di bawah. Lebih jelasnya bisa dilihat di Cara Install Laravel di Linux Semua Distro jika anda menggunakan linux.
laravel new belajar-postgres
cd belajar-postgres
php artisan serve
Buka localhost:8000
pada browser untuk memastikan apakah project baru laravel sudah berhasil terpasang.
2. Nyalakan PostgreSQL Server
Pastikan PostgreSQL sudah menyala. Ini tentu saja tergantung dari sistem operasi yang teman-teman gunakan, jika menggunakan linux, secara umum postgresql bisa dinyalakan dengan perintah systemctl
berikut:
sudo systemctl start postgresql
3. Buat Database
Ada beberapa cara membuat database di postgresql. Di sini saya mencontohkan tiga cara, silakan perhatikan dengan baik lalu pilih salah satu cara yang menurut anda lebih memudahkan.
Cara 1: Menggunakan perintah createdb
Dengan menggunakan perintah createdb
, anda otomatis akan membuat database milik dari user yang sedang login tanpa melakukan autentikasi. Perintahnya adalah sebagai berikut:
createdb belajar
Cara 2: Menggunakan DB Client GUI
Cara yang kedua adalah menggunakan DB Client GUI. Di sini saya contohkah menggunakan DB Client adminer
, simpel tapi powerfull untuk berbagai macam DBMS. Anda bisa bebas menggunakan DB Client yang lainnya.
Cara 3: Membuat dengan QUERY
Cara membuat database yang ketiga adalah dengan menggunakan Query secara langsung dari psql
client. Yang pertama anda lakukan adalah login ke postgresql dengan menggunakan perintah psql
. Secara umum tanpa menambahkan parameter apa pun, anda akan otomatis login menggunakan user yang sedang aktif.`
psql
Lalu tulis query untuk membuat database baru.
CREATE DATABASE belajar;
4. Atur Koneksi
Setelah database berhasil kita buat. Langkah selanjutnya adalah mengatur koneksi agar aplikasi laravel kita terhubung ke database yang telah kita buat. Pertama-tama buka file .env
, kalau belum ada maka copy
dulu file yang sudah ada dari .env.example
.
cp .env.example .env
Jangan lupa jika belum ada APP_KEY
maka kita generate dulu dengan perintah berikut:
php artisan key:generate
Pada nilai dengan prefix DB_
kita atur seperti di bawah ini agar bisa terkoneksi dengan database postgresql yang baru saja kita buat.
...
DB_CONNECTION=pgsql
DB_HOST=localhost
DB_PORT=5432
DB_DATABASE=<nama-database>
DB_USERNAME=<username>
DB_PASSWORD=<password>
...
Ganti nilai yang diapit tanda <
dan >
dengan konfigurasi yang sesuai`.
Harusnya aplikasi kita sekarang telah berhasil terkoneksi dengan postgresql.
Setelah ini kita akan mencoba untuk membuat migration
dan seeder
, agar bisa terbukti apakah benar-benar sudah berhasil terkoneksi atau tidak.
5. Contoh Migration dan Seeder
Sebenarnya secara default laravel sudah hadir dengan dua buah migration, yaitu untuk tabel users
dan tabel password_resets
. Sehingga kalau kita jalankan perintah php artisan migrate
kita otomatis akan mendapatkan dua tabel tersebut di database kita dan satu tabel tambahan yaitu migrations
.
Pertama-tama kita akan coba lakukan php artisan migrate
terlebih dahulu untuk mengecek apakah koneksi database kita sudah benar atau tidak. Setelah itu kita akan coba membuat tabel baru dengan migration yang baru.
php artisan migrate
Jika tidak ada error dan anda mendapatkan output seperti gambar di atas, maka itu artinya koneksi kita berhasil dan di database kita yaitu database belajar
sekarang telah terdapat 3 tabel baru.
Pada bagian selanjutnya kita akan mencoba membuat tabel baru bernama tabel buku
dengan memanfaatkan migration
laravel.
Buat Migration Untuk Tabel Buku
Kita akan membuat tabel baru bernama tabel buku
. Dengan attribut seperti berikut:
buku
id - integer
judul - varchar
penulis - varchar
stok - integer
buku_terjemahan - boolean
deskripsi - longtext
created_at - timestamp
updated_at - timestamp
Jalankan perintah php artisan make:migration <nama-migration>
untuk membuat migration
baru.
php artisan make:migration create_buku_table --create=buku
Setelah itu kita akan mendapati file baru di dalam direktori database/migrations
sesuai dengan nama migration
yang kita definisikan.
Ketika kita buka file database/migrations/XXXX_XX_XX_XXXXXX_create_buku_table.php
, kita akan dapati kode sebagai berikut pada fungsi up
:
<?php
Schema::create('buku', function (Blueprint $table) {
$table->bigIncrements('id');
$table->timestamps();
});
Ini otomatis tertambahkan jika kita saat membuat migration
baru kita sertakan flag --create=<nama-table>
. Ini memudahkan kita karena kita tidak perlu menulis banyak kode secara manual.
Baik, selanjutnya kita akan membuat kolom-kolom seperti yang sudah berlalu penjelasannya. Kita tambahkan kode berikut ini kedalam fungsi up()
.
<?php
public function up()
{
Schema::create('buku', function (Blueprint $table) {
$table->bigIncrements('id');
$table->string('judul', 60);
$table->string('penulis', 30);
$table->integer('stok');
$table->boolean('buku_terjemahan')->default(false);
$table->longText('deskripsi')->nullable();
$table->timestamps();
});
}
Eksekusi perintah php artisan migrate
untuk mengaplikasikan migration
yang baru kita buat.
php artisan migrate
Jika tidak terjadi error, berarti tabel buku
telah berhasil kita buat.
Buat Seeder Untuk Tabel Buku
Oke, di sini kita akan membuat seeder baru untuk tabel buku. Lalu kita isi data dummy sebanyak 100 baris. Bagi kalian yang ingin mempelajari lebih jauh, saya pernah menulis tutorial tersendiri tentang Cara Membuat Data Dummy di Laravel.
Ada pun pada kesempatan kali ini, kita ambil simpelnya saja.
Jalankan perintah php artisan make:seeder
untuk membuat seeder baru.
php artisan make:seeder TabelBukuSeeder
Maka file baru di folder database/seeds/
akan dibuat.
Buka file database/seeds/TabelBukuSeeder.php
. Lalu pada fungsi run()
ubah kodenya menjadi seperti berikut:
<?php
/**
* Run the database seeds.
*
* @return void
*/
public function run()
{
$faker = \Faker\Factory::create();
\DB::table('buku')->truncate();
for ($i=0; $i < 100; $i++) {
DB::table('buku')->insert([
'judul' => $faker->sentence(3),
'penulis' => $faker->name,
'stok' => $faker->numberBetween(1, 10),
'buku_terjemahan' => $faker->randomElement([true, false]),
'deskripsi' => $faker->text(100),
'created_at' => now(),
'updated_at' => now()
]);
}
}
Buka file database/seeds/DatabaseSeeder
lalu pada fungsi run()
, panggil kelas TabelBukuSeeder
.
<?php
/**
* Seed the application's database.
*
* @return void
*/
public function run()
{
$this->call(TabelBukuSeeder::class);
}
Setelah semuanya rampung, eksekusi perintah php artisan db:seed
.
php artisan db:seed
Jika tidak ada error, maka sekarang tabel buku
memiliki 100 data dummy.
Kesimpulan
Kesimpulannya, laravel dengan segala kemudahannya membuat kita benar-benar bisa fokus ke proses pembuatan program. Karena layer database telah dihandle sedemikian rupa sehingga kita tidak perlu berkotor-kotor untuk bersentuhan langsung dengan layer database.
Oleh karena itu jika teman-teman perhatikan di atas, tidak ada bedanya ketika kita menggunakan postgresql atau mysql sebagai DBMS kita, laravel menjembataninya dengan baik sekali. Sehingga jika teman-teman ingin mengubah DBMS ke mysql, tinggal mengganti .env
nya saja.
Semoga bermanfaat :) Nantikan tutorial-tutorial selanjutnya!