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

Screenshot from 2019-04-09 06-53-01.png

cd belajar-postgres
php artisan serve

Screenshot from 2019-04-09 07-02-01.png

Buka localhost:8000 pada browser untuk memastikan apakah project baru laravel sudah berhasil terpasang.

Screenshot from 2019-04-09 07-02-02.png

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

Screenshot from 2019-04-09 20-33-46.png

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.

Screenshot from 2019-04-09 20-33-11.png

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;

Screenshot from 2019-04-09 20-34-04.png

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.

Screenshot from 2019-04-09 20-34-04.png

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

Screenshot from 2019-04-09 20-34-04.png

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.

Screenshot from 2019-04-09 20-34-04.png

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

Screenshot from 2019-04-09 20-34-04.png

Setelah itu kita akan mendapati file baru di dalam direktori database/migrations sesuai dengan nama migration yang kita definisikan.

Screenshot from 2019-04-11 13-53-46.png

Ketika kita buka file database/migrations/XXXX_XX_XX_XXXXXX_create_buku_table.php, kita akan dapati kode sebagai berikut pada fungsi up:

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().

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.

Screenshot from 2019-04-09 20-34-04.png

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

Screenshot from 2019-04-09 20-34-04.png

Maka file baru di folder database/seeds/ akan dibuat.

Screenshot from 2019-04-09 20-34-04.png

Buka file database/seeds/TabelBukuSeeder.php. Lalu pada fungsi run() ubah kodenya menjadi seperti berikut:

/**
 * 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.

/**
 * 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.

Screenshot from 2019-04-09 20-34-04.png

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!