Anda di halaman 1dari 75

Basic Tutorials

Laravel 5
Presented by:
Networking Team 2013
KATA PENGANTAR

Puji Syukur kehadirat Allah SWT karena atas rahmat dan kemudahan yang diberikan-Nya,
modul tutorial dasar laravel ini dapat terselesaikan. Sebenarnya kami pun masih butuh banyak belajar
dalam mengembangkan web menggunakan framework laravel ini, mengingat banyak hal yang belum
kami pelajari serta versi laravel yang masih terus mengalami perubahan. Maka dari itu, saran dan
masukan serta sharing knowledge sangat kami butuhkan agar pengetahuan kami tentang framework
laravel dapat terus bertambah dan up to date.
Sebelumnya, kami mengucapkan terima kasih kepada:
1. Bapak Muhammad Eka Suryana, M.Kom selaku supervisor divisi Networking yang telah
membimbing dan memberikan masukan selama ini.
2. Seluruh anggota tim Networking 2013 atas kerjasamanya dalam mengerjakan project-
project Net.
3. Author blog dan tutorial Laravel online, terutama tentorweb (http://tentorweb.web.id)
yang menjadi referensi utama dalam pengerjaan modul tutorial dasar laravel ini.

Mudah-mudahan tutorial ini sedikitnya dapat membantu teman-teman yang akan baru
memulai belajar menggunakan framework laravel 5.1 ini.

Penyusun,

Networking Team 2013

i
DAFTAR ISI

KATA PENGANTAR................................................................................................................................... i
DAFTAR ISI .............................................................................................................................................. ii
BAB I INTRO ............................................................................................................................................ 1
A. Apa itu Laravel ? .......................................................................................................................... 1
B. Kenapa Memakai Laravel ? ......................................................................................................... 1
C. MVC (Model-View-Controller)..................................................................................................... 1
D. Requirements .............................................................................................................................. 2
BAB II INSTALASI..................................................................................................................................... 3
A. Penginstalan Composer .............................................................................................................. 3
B. Penginstalan Laravel Package ..................................................................................................... 4
C. Create and Running New Laravel Project ................................................................................... 5
BAB III MENGENAL BASIC ROUTING LARAVEL ...................................................................................... 7
A. Routes-View ................................................................................................................................ 7
B. Routes-Controller........................................................................................................................ 9
BAB IV MENGIRIMKAN DATA DARI CONTROLLER KE VIEW (Routes-Controller-View) ..................... 14
BAB V MENGENAL BLADE LARAVEL ..................................................................................................... 21
A. Apa itu Blade pada laravel? ...................................................................................................... 21
B. Penggunaan Blade..................................................................................................................... 21
BAB VI KONFIGURASI DAN MIGRASI DATABASE ................................................................................ 26
A. Konfigurasi Database ................................................................................................................ 26
B. Migrasi Database ...................................................................................................................... 27
BAB VII MENGENAL ELOQUENT LARAVEL ........................................................................................... 33
A. Apa itu Eloquent ? ..................................................................................................................... 33
B. Penggunaan Eloquent ............................................................................................................... 33
BAB VIII PENERAPAN ALUR MVC ......................................................................................................... 40
BAB IX PEMBUATAN FORM DAN DATA POST HANDLING .................................................................. 49
BAB X PENANGANAN DATE DAN QUERY SCOPE ................................................................................. 60
BAB XI FORM REQUEST DAN VALIDASI ............................................................................................... 66
REFERENSI ............................................................................................................................................. 72

ii
BAB I INTRO
A. Apa itu Laravel ?
Laravel adalah sebuah Framework PHP yang bersifat opensource, Ditulis oleh Taylor
Otwell dengan lisensi dibawah MIT License. Dengan Laravel, tugas-tugas umum developer
dapat dikurangi pada sebagian besar proyek-proyek web seperti routing, session, dan
caching. Laravel dibuat untuk membantu para developer khususnya dalam membuat sebuah
web dengan sintak yang sederhana, elegan, ekspresif, dan menyenangkan. Seperti yang
ditulis dalam website nya :
Laravel is a clean and classy framework for PHP web development. Freeing you from
“ Laravel
spaghetti is a itclean
code, and
helps youclassy framework
create for applications,
wonderful PHP web development. Freeing
using simple, you
expressive
from Development
syntax. spaghetti code, it helps
should you create
be a creative wonderful
experience that applications,
you enjoy, notusing simple,
something that
expressive
is painful. syntax.
Enjoy Development
the fresh air! should be a creative experience that you enjoy, not
something that is painful. Enjoy the fresh air! “

B. Kenapa Memakai Laravel ?


Sesuai dengan motto laravel itu sendiri “PHP doesn’t hurt, code happy & enjoy the
fresh air”. Tujuan utama dari laravel adalah mempermudah coding dalam membuat sebuah
produk web. Bahkan laravel termasuk dalam best php framework 2014 versi webdesignmoo
dan yang paling banyak digunakan oleh developer. Ini membuktikan bahwa menggunakan
Laravel memang dapat mempercepat dan mempermudah development website.

C. MVC (Model-View-Controller)
Seperti kebanyakan framework php lainnya, Laravel menerapkan arsitektur MVC.
MVC atau kepanjangan dari Model-View-Controller adalah sebuah metode yang digunakan
dalam pengembangan suatu aplikasi yang memisahkan data (model) dari tampilan (View)
dan logic dari aplikasi itu sendiri (Controller). MVC memisahkan pengembangan aplikasi
berdasarkan komponen utama yang membangun sebuah aplikasi seperti manipulasi data,
user interface, dan kontrol dalam sebuah aplikasi. Kita harus memahami alur MVC ini dengan
baik agar memudahkan kita dalam mengembangkan web menggunakan Laravel.

Model digunakan untuk proses query atau manipulasi data ke/dari database.
Sedangkan View kaitannya erat dengan antarmuka / interface tampilan sebuah web seperti
HTML, CSS, dan JS dan data yang bersifat client. Controller adalah logika dari sebuah web
yang menjembatani komunikasi antara Model dan View. Jika digambarkan alur proses MVC
adalah sebagai berikut:

Modul Pelatihan Dasar Laravel 1


Adapun gambar simulasi proses MVC pada Laravel diperlihatkan pada gambar di bawah ini.

Penjelasan sistematika MVC akan diterangkan lebih lanjut pada saat praktek/implementasi
secara langsung.

D. Requirements
Laravel sangatlah mudah untuk dikonfigurasi dalam mengembangkan sebuah
proyek. Pada bagian ini akan dijelaskan software/tools apa saja yang diperlukan dalam
menunjang pengembangan web dengan menggunakan Laravel. Adapun kebutuhan yang
harus disediakan diantaranya :

• Text Editor
Pilih text editor yang sesuai dengan kebutuhan atau selera. Terdapat banyak pilihan text
editor, diantaranya Notepad++, PHPStorm, Sublime Text, Aptana, Netbeans, dan lain-
lain.
• Webserver dan Database
Yang terpenting dalam instalasi Laravel yaitu bahwa versi PHP minimal versi 5.4 ke atas
dan sudah terinstal ekstensi php. Penulis menggunakan XAMPP versi 4.3.11 yang dapat
diunduh di website nya atau sudah disediakan dalam paket CD.
• Composer
Untuk dapat menginstal laravel kita membutuhkan composer. Composer adalah sebuah
dependency ‘manager’ untuk PHP. Kita dapat menambah library yang dibutuhkan untuk
website secara otomatis tanpa perlu mendownload satu persatu. Mirip dengan apt-
get install pada sistem operasi linux.

Modul Pelatihan Dasar Laravel 2


BAB II INSTALASI
A. Penginstalan Composer
• Unduh Composer di https://getcomposer.org/Composer-Setup.exe,

• Klik dua kali file tersebut sehingga muncul dialog setup install composer kemudian
klik Next.

• Pilih “Do not Install Shell Menus” kemudian klik next.

• Check versi php pada tombol “browse”, kemudian masukan path php yang sudah
diiinstal di komputer. Disini dicontohkan path php nya yaitu di
“C:/xampp/php/php.exe” kemudian klik next.

Modul Pelatihan Dasar Laravel 3


• Jika versi php sudah memenuhi standar instalasi Laravel, maka akan muncul tampilan
sebagai berikut. Kemudian klik Install.

Pada akhir instalasi, untuk memastikan composer telah terinstal, cek keberadaan composer
dengan menyalin path berikut “C:\ProgramData\ComposerSetup\bin” pada ‘PATH’ di file
explorer windows. FYI, ProgramData tersembunyi pada Windows 7.

B. Penginstalan Laravel Package


Penginstalan Laravel bergantung pada Composer. Sebelum mulai menginstal laravel,
pastikan Composer telah terinstall dengan baik. Buka command prompt Windows, lalu ketik
‘composer’. Jika composer telah terinstal dengan baik, pada command prompt akan muncul
informasi seperti yang ditunjukkan pada gambar di bawah ini:

Modul Pelatihan Dasar Laravel 4


Selanjutnya, ketik composer global require “laravel/installer=~1.1”
pada cmd. Selanjutnya akan terdownload beberapa file, pastikan semua file terdownload
dengan sukses. Jika gagal / file corrupt, ulangi lagi. Jika sudah, periksa direktori
“C:\Users\<username>\AppData\Roaming\Composer\vendor\bin”, dan pastikan kalau
executable Laravel (bertipe batch file) ada.

Jika sudah menemukan direktori laravel, kita harus menyalin seluruh path direktori tersebut
pada ‘Path’ di environment variables Windows sehingga Laravel dapat dieksekusi dari
direktori mana saja. Langkahnya sebagai berikut:

Buka Control Panel -> pilih System -> pilih Advanced system settings -> pilih Environment
Variables -> scroll System variables -> edit Path. Paste seluruh path direktori yang sudah
disalin tadi pada ‘variable value’. FYI, jangan lupa menambahkan semicolon (;) sebelum
mem-paste path direktori laravel, jika sebelumnya sudah terdapat path lain di variable value.

Klik OK pada dialog box. Buka command prompt baru, kemudian ketik ‘laravel’ pada prompt
untuk memastikan bahwa laravel telah terinstal dengan baik atau tidak.

C. Create and Running New Laravel Project


Sekarang, kita akan membuat project Laravel baru. Project akan terbentuk secara otomatis
via instruksi laravel pada command prompt. Instruksi tersebut akan menyiapkan beberapa
dependency dan sekumpulan kerangka file MVC. Eksekusi perintah “laravel new
<project_name>” pada command window, maka akan terbentuk direktori <project_name>
baru.

Modul Pelatihan Dasar Laravel 5


Kalian dapat mengecek <project_name> yang telah dibuat di Windows Explorer, untuk
memastikan project benar-benar telah ada.

Struktur direktori mendefinisikan bagaimana kita akan mengembangkan proyek LARAVEL,


namun untuk sekarang yang terlihat hanya file bertipe artisan file. File ini akan digunakan
untuk startup web laravel pertama kita. Dari command prompt, arahkan ke dalam direktori
project “cd <project name>” lalu ketik “php artisan serve”.

Ketik http://localhost:8000 pada browser. welcome page untuk project baru akan muncul seperti
ditunjukkan pada gambar berikut.

Modul Pelatihan Dasar Laravel 6


BAB III MENGENAL BASIC ROUTING LARAVEL
A. Routes-View

1. Silakan buka editor kalian, buka pada bagian folder “app”. Kemudian, buka file routes.php
*NB : perhatikan pada Route yang pertama saja.

2. Sekarang, buka folder “resources” kemudian buka folder “view”, di dalamnya sudah
terdapat file bernama “welcome.blade.php”. cari tulisan “Laravel 5” dalam source codenya,
ganti dengan kalimat lain.

Modul Pelatihan Dasar Laravel 7


3. Kemudian, refresh welcome page pada localhost:8000, tulisan laravel 5 pada welcome
page akan berubah menjadi seperti di bawah ini.

Penjelasan:
return view (“welcome”) pada routes.php menunjukkan bahwa routes memanggil file
welcome.blade.php pada folder view. Di dalam file welcome.blade.php tersebut terdapat
sourcecode bertipe HTML yang bertanggung jawab dalam memunculkan tulisan pada
welcome page ketika kita menjalankan localhost:8000.

Modul Pelatihan Dasar Laravel 8


B. Routes-Controller

Buka folder App>Http>Controller. Buat file baru bernama WelcomeController.php di dalam


folder Controller. File dapat dibuat manual maupun otomatis melalui cmd. Agar sedikit lebih keren,
disini akan dicontohkan membuat file controller baru melalui cmd.

Buka command prompt baru, arahkan ke direktori project dengan menggunakan perintah cd:
cd <project_directory>

Lalu jalankan perintah:


php artisan make:controller <nama_controller>

Setelah itu, cek folder Controller. WelcomeController.php akan tergenerate secara otomatis
di folder Controller.

Buat fungsi baru dengan nama index(), silakan isi function index dengan me-returnkan
kalimat apapun, contohnya seperti di bawah ini.

Modul Pelatihan Dasar Laravel 9


Penjelasan : Pengembalian string pada contoh tersebut hanya untuk mempermudah pembelajaran
saja. Pada kenyataannya, ketika develop system kita biasanya tidak akan menggunakan pengembalian
berupa string / huruf begitu.

Selanjutnya, buka file routes.php kembali. Buat routes baru yang akan merutekan fungsi index di
dalam file WelcomeController yang baru saja dibuat tadi. Jangan lupa untuk memberi tanda comment
dahulu pada routes yang lama, agar tidak terjadi error ketika proses eksekusi.

Penjelasan:
Route::get(‘/’,’WelcomeController@index’) berarti untuk root web atau ‘ / ’(tanda slash-nya) akan
diarahkan ke controller “WelcomeController” dan mengeksekusi function “index”.
*root web : tampilan paling awal pada sebuah web ( contoh : laravel.com/...)

Modul Pelatihan Dasar Laravel 10


Selanjutnya, refresh kembali browser pada localhost:8000. Dannn selamat, nilai string di function
index() tadi berhasil di return.

Sekarang kita akan bermain-main lagi dengan routes, agar lebih memahami alurnya. Kembali ke
routes.php, tambah satu route baru. Lihat gambar di bawah ini.

Penjelasan: kita akan mengarahkan “http://{alamat laravel}/aboutme” ke controller


“WelcomeController”, pada function “aboutme”.
Setelah berhasil menambahkan route baru, silahkan coba buka “localhost:8000/aboutme”
Bisa? Pasti nggak.
Kenapa nggak bisa?
Yap, Seharusnya kita juga membuat sebuah function baru di controller “WelcomeController” dengan
nama “aboutme” . Let’s see the pict !

Modul Pelatihan Dasar Laravel 11


Selanjutnya, refresh kembali browser pada localhost:8000. Dannn selamat, nilai string di function
aboutme() tadi berhasil di return.

Silahkan dicoba sampai bosen, jangan cuman nyobain yang kayak diatas yak. Banyak-banyak nyobain
sampai bisa. Kalau memang sudah oke, mari kita melangkah lebih lanjut. Sekarang kita akan coba
untuk mengarahkan sebuah function untuk tidak me”return” string, namun sebuah file “view”.
1. Buat sebuah folder bernama “laman” di folder “resources>views”.
2. Buat sebuah file di dalam folder “laman” bernama “aboutme.blade.php”.
(.blade-nya ditulis ya, penjelasannya nanti).
3. Arahkan function “aboutme” yang ada di WelcomeController ke view “aboutme”.
kalau bingung cek gambar.
4. Akses http://localhost:8000/aboutme, maka ? tampilannya ?

BLANK. File aboutme.blade.php masih kosong.

Nah, untuk memberikan tampilan yang sedikit berbeda, kita akan coba untuk memberikan sentuhan
HTML pada file “aboutme.blade.php kita.

Modul Pelatihan Dasar Laravel 12


Cek langsung ke browser masing-masing, refresh http://localhost:8000/aboutme

Modul Pelatihan Dasar Laravel 13


BAB IV MENGIRIMKAN DATA DARI CONTROLLER KE VIEW (Routes-
Controller-View)

Pada bab sebelumnya, kita sudah mainan routing, saatnya kita lebih jauh mendalami pertukaran data
antara controller dan view. Untuk kali ini kita akan bermain-main dengan mengirimkan data dari
controller ke view. Data yang mungkin kita dapat dari database ataupun array tertentu, kita otomatis
menyimpannya di controller. Nah di tutorial kali ini, data yang tersimpan itu akan kita kirimkan ke
“dummy view”, alias file viewnya memang benar-benar hanya menampilkan data saja, yang
memanipulasi adalah controller. Baik, tanpa panjang lebar mari kita mulai :

1. Silahkan buka routes.php kemudian hapus semua code disana. Tambahkan baris code baru berikut,

penjelasan :

kita menambahkan halaman “aboutme” yang diarahkan ke controller bernama “LamanController”


dan kemudian mengeksekusi function aboutme yang ada dalam controller tersebut. Juga web root
kita arahkan ke index dari LamanController.

2. Silahkan dicoba buka browser dan akses ke http://localhost:8000/aboutme. Perhatikan ada pesan
kesalahan, yaitu LamanController tidak ada, atau does not exist.

3. Maka kita harus membuat sebuah controller baru bernama LamanController, sesimpel itu saja. Ya,
memang membuat sebuah file php sebagai controller bisa menggunakan klik kanan pada folder
controller > add new / create new file php > kasih nama. Tapi seperti bab sebelumnya, kita akan
gunakan artisan lewat cmd dalam membuat controller baru.

Modul Pelatihan Dasar Laravel 14


nah, sebenarnya kalau kalian bingung gimana menggunakan perintah-perintah di atas,
santai aja. Sudah ada fasilitas yang bakal kamu suka.

Cek dis out...

1. Ayok kita buat controller baru namanya “LamanController” berdasar data help diatas
maka kita bisa simpulkan perintah yang harus kita masukkan sebagai berikut :

Modul Pelatihan Dasar Laravel 15


2. Langsung balik ke editor kalian, ceklah di folder app/http/controllers/ sudahkah ada
LamanController.php ? Kalau sudah ada mari kita buka dan pelajari.

3. Buka, terus mari kita buat sebuah function yang bernama “aboutme” yang akan
dieksekusi saat kita mengakses laman aboutme tadi.
Nb : untuk isi functionnya silahkan di return dengan string saja dahulu.

4. Silahkan buka page/laman aboutme pada browser anda.

Modul Pelatihan Dasar Laravel 16


5. Baik sekarang kita coba ganti string, kita arahkan ke file view laman/aboutme yang kita
pernah buat di artikel kita sebelumnya .

aboutme.blade.php

Setelah itu test. akses laman aboutme kalian di web browser. apakah benar telah
mengakses file yang kita rujuk.
9. Kalau sudah, coba kita main-main dengan sedikit mengirimkan nilai ke view. Jadi
ceritanya kita akan mengirim data nama ke view aboutme tadi. Buka controller,
LamanController kemudian edit return tadi menjadi seperti bawah ini => lihat gambar :

Modul Pelatihan Dasar Laravel 17


Penjelasan : kita akan mengirim value yang ada di dalam $nama, melalui alias ‘nama’ ke
view aboutme .
10. Kemudian, Buka file aboutme.blade.php . Kita perlu menerima kiriman data dari si
controller. Masukkan sintaks blade seperti gambar di bawah ini.

NB : Pada dasarnya kita juga bisa menggunakan tag biasa kemudian panggil dengan
echo, namun di dalam blade sudah disediakan tag yang lebih keren dan ringkas daripada
php. Cek gambar atas.
Kalau sudah silahkan cek di laman aboutme dari web browser kalian.

Modul Pelatihan Dasar Laravel 18


11. Sebenarnya dalam pengiriman data dari controller banyak type metode yang bisa
kita pakai, semuanya tergantung selera masing-masing. Nah, kalau tadi yang kirim
adalah single data, bagaimana kalau array data ? Berikut salah satu contoh caranya :

Ada perbedaan sedikit dalam menerima , karena dia multiple data yang dikirim.

Modul Pelatihan Dasar Laravel 19


maka tampilannya akan menjadi :

12. Atau kalau kalian memang sudah pernah megang Codeigniter sebelumnya pastinya
sudah ga asing dengan metode berikut, dan masih ada cara yang lain, so… explore your
self ya :D
Cek dis ot :

Penjelasan : $data equal array , kemudian diisilah awal dan akhir sebagai identifier, terus
dinda dan khrsm sebagai value nya . Kemudian datanya di kirim ke file view aboutme .
Untuk pemanggilan nya sama dengan diatas. Maka tampilannya akan seperti ini :

Done.

Modul Pelatihan Dasar Laravel 20


BAB V MENGENAL BLADE LARAVEL

A. Apa itu Blade pada laravel?


Setelah kita mempelajari routing dasar dan pengiriman data dari controller ke view dari Laravel,
juga sudah mencoba bermain dengan view dan controller, sekarang saatnya menambahkan
penjelasan sedikit tentang blade. Masih ingat pada bab sebelumnya nama file view nya
menggunakan.blade.php ?
Apa itu blade ? Ini jawabannya langsung dari masternya :

artinya : Blade itu mudah, juga template engine yang sangat powerful disediakan bersama laravel.
Tidak seperti controller layout, daaaaaan seterusnya. Intinya Blade itu adalah template engine untuk
laravel. Dan semua file blade harus menggunakan extensi .blade.php.
Oke tanpa panjang lebar lagi mari kita coba latihan templating menggunakan Blade.

B. Penggunaan Blade
1. Masih ingat kan di bab sebelumnya kita sudah membuat satu buah template view bernama
“aboutme.blade.php”. Nah, sekarang silahkan untuk main main aja, buat satu buah file view lagi
copas saja dari aboutme.blade.php :

Juga jangan lupa kita harus membuat method di controller sebagai pemanggil file viewnya , dan
kemudian membuat route yang mengarahkan ke method baru yang kita buat tadi. Kalau bingung
lihat gambar di bawah :
kita buat sebuah method / function di dalam controller LamanController bernama contactme :

Modul Pelatihan Dasar Laravel 21


Kemudian langsung arahkan dengan route :

Kalau sudah silahkan check langsung :

Oke, berarti kalau memang sudah bisa, kalian sudah lumayan mahir dalam alur laravel. Mari kita
lanjut ke step berikutnya,
2. Mari kita kenalan sedikit dan bermain dengan fitur blade, alias template engine di laravel. fyi,
umumnya programmer sering kali membuat sebuah template menjadi beberapa bagian untuk

Modul Pelatihan Dasar Laravel 22


mengefektifkan dan mengefisiensikan resource, supaya tidak harus mengcopas seluruh
bagian template setiap kali membuat sebuah page. Padahal, satu page dengan yang lain semuanya
hampir sama templatenya, dan yang berbeda hanyalah bagian konten. Maka dari itu, tidak perlu kita
mengcopas seluruh template. Namun, hanya bagian kontenlah yang dibedakan pada masing-masing
page/module. Buat sebuah view, beri nama “masterview.blade.php” dan isinya sama persis dengan
view contactme atau aboutme. Hanya bedanya kita akan membuat sebuah yield pada body , yang
nantinya bisa diganti sesuai dengan page yang akan kita panggil.

3. Kemudian buka aboutme.blade.php dan hapus bagian <body> ke atas , begitu pula </body> ke
bawah, karena pada dasarnya kita hanya perlu bagian yang ada di dalamnya <body></body>.

Penjelasan:
@extends(‘masterview’) digunakan hampir seperti include file masterview.blade.php kalau di dalam
php biasa.
@section(isi) berfungsi sebagai identifier bahwa section ini lah yang akan disisipkan ke bagian
yield(‘isi’) yang ada di masterview.blade.php
4. Cek , apakah berhasil ?

Modul Pelatihan Dasar Laravel 23


5. Coba juga pada contactme… seperti dibawah ini.

Namun ada sedikit tambahan, di bagian contactme.blade.php akan kita tambahkan sebuah
footer, yang sebelumnya di aboutme tidak ada.
Buka masterview.blade.php, kemudian tambahkan line code berikut :

Modul Pelatihan Dasar Laravel 24


Setelah itu tambahkan section footer pada file contactme.blade.php sebagai pengisi yield
footer. .

Silakan bandingkan, aboutme yang tidak ada footernya dan contactme yang telah kita beri
footer.

Modul Pelatihan Dasar Laravel 25


BAB VI KONFIGURASI DAN MIGRASI DATABASE

A. Konfigurasi Database
Pada bab ini kita akan membahas tentang migration yang ada di laravel, namun sebelumnya
kita sedikit bahas tentang konfigurasi database terlebih dahulu. Langkah pertama, kita akan membuat
database yang bernama “laravel5” di mysql phpmyadmin.

Sebelum melangkah lebih lanjut, kami akan menjelaskan bagaimana cara mengkonfigurasi database
agar bisa terbaca oleh aplikasi laravel kita. Pertama-tama, silakan buka file database.php pada folder
config.

Di dalam file database.php terdapat berbagai macam driver untuk database kalian, sesuai
dengan yang dibutuhkan dalam pengembangan sistem yang akan kalian kerjakan. Untuk saat ini, kita
set saja secara default yaitu “mysql”. Di dalam file ini tidak perlu adanya perubahan bila menggunakan
mysql, tidak perlu mengubah username atau password. Karena file yang perlu diubah adalah file .env
yang berada di luar folder. Kenapa? Karena bila kita menggunakan git, kemudian app laravel di publish,
dan bisa diakses orang banyak, maka file config ini juga akan terbaca maka perlu adanya environment,
yang mana file .env itu tidak akan diambil oleh git, alias di ignore.

Modul Pelatihan Dasar Laravel 26


Maka silakan disetting di file .env sesuai dengan settingan yang kalian buat, dengan host
“localhost” , db name “laravel5” , username “root” dan password kosong. Kemudian juga pastikan di
mysql bernama “laravel5”.

B. Migrasi Database
Sebelum ke topik, mari kita bayangkan terlebih dahulu. Bayangkan ketika kita kerja secara
remote yang mana database juga harus sinkron satu developer dengan yang lain. Biasanya satunya
membuat database, lalu diexport, lalu developer yang lain mengimport, lalu bagaimana kalau ada
perubahan ditengah jalan? Apa harus melakukan export import lagi? Hal seperti itu, tidak efektif
bukan? Laravel disini menyediakan sebuah fitur yang namanya migration, sebagai trik agar bisa
sinkron database antar developer dengan langkah yang sangat mudah, yaitu hanya perlu menjalankan
perintah migration. Agar lebih jelasnya, mari kita lakukan percobaan berikut:

• Buka PhpStorm lalu masuk ke folder database, migration. Di dalamnya akan ada 2 file. Silahkan
buka yang create_users_table.php.

• Ada 2 method, yaitu up dan down. Yang pertama adalah up yang akan membuat table users,
“blueprint” kolom dari table “users” akan menjadi id yang autoincrement, name berjenis

Modul Pelatihan Dasar Laravel 27


string, email berjenis string dan unique, password berjenis string dengan panjang karakter 60,
rememberToken akan dijelaskan di artikel lain, dan timestamps yaitu log dari waktu aktivitas
user. Sedangkan,
• method yang ke-2 adalah down, yaitu sebagai method untuk menghapus tabel users (menge
“drop” tabel), sebelum mengubah kolom tabel users.

• Dengan gambar diatas, berarti kita sudah punya 2 file, yang nantinya akan menjadi tabel user,
dan password resets. Tapi saat kita mengecek di database laravel5, data tersebut belum ada
karena kita belum meng-imigrasikannya. Langkah selanjutnya adalah kita perlu meng-
imigrasikan file tadi ke dalam database dengan cara mengetik php artisan migrate
menggunakan command prompt.

• Setelah itu kita cek langsung di database yang telah kita buat, yaitu laravel5.

Modul Pelatihan Dasar Laravel 28


• tabel migrations ini adalah auto-generate oleh laravel untuk menyimpan data-data migrasi,
maka tak perlu kita utak-atik lagi. Baik, silakan lihat isi dari tabel users dan lihat apakah cocok
dengan blueprint yang telah kita temui di file yang telah kita buka diatas? Pastinya iya.

• Sekarang kalau saja setelah membuat sebuah tabel, contohnya users, kemudian salah satu
kolom salah tulis nama, mungkin seharusnya “username” malah kita tulis “name”.

Modul Pelatihan Dasar Laravel 29


• Jika terjadi kesalahan seperti gambar diatas, maka kita perlu me-rollback, membuat tabel kita
seperti sebelumnya, kemudian menjalankan kembali migrate untuk memasukan nama yang
benar.

• Setelah kita me-rollback lalu kita ubah “name” menjadi “username”.

• terakhir, jalankan php artisan migrate lagi. Maka setelah menjalankan perintah itu,
sebagai pembuktian silakan lihat pada tabel user, apakah sudah berubah atau belum.

Modul Pelatihan Dasar Laravel 30


• selanjutnya, karena kita sudah bisa menggunakan migrate dan juga rollback, bagaimana kalau
kita ingin membuat sebuah file migrate, yang akan membuat sebuah tabel bernama
“articles”? Maka perintahnya adalah seperti gambar dibawah ini:

• Setelah selesai, langsung kita review, maka akan kita dapatkan sebuah file baru di dalam folder
migrations.

• Lalu kita buka file tersebut dan di dalamnya sudah diberikan beberapa method yang sudah
terisi. Yaitu id, dan timestamps. Namun, kita perlu menambahkan beberapa kolom lagi untuk
tabel articles kita.

Modul Pelatihan Dasar Laravel 31


• Setelah selesai lalu kita jalankan migrate lagi.

• Untuk membuktikan apakah berhasil atau tidak nya, kita coba buka database lagi lalu coba di
cek apakah table articles sudah berhasil diciptakan atau belum.

Modul Pelatihan Dasar Laravel 32


BAB VII MENGENAL ELOQUENT LARAVEL

A. Apa itu Eloquent ?


Eloquent itu seperti sebuah script yang merepresentasikan database, tabel, bahkan relasi
antar tabel. Seperti perantara antara laravel dengan database, dalam hal ini adalah mysql.

B. Penggunaan Eloquent
• Buatlah sebuah model (representasi tabel) baru bernama ”Article”. Dengan perintah php
artisan make:model

• Setelah membuat model baru, kita bisa langsung mengeceknya di sidebar editor atau di folder
laravel, dan ada sebuah file bernama Article.php yang telah kita buat sebelumnya.

Buka file Article.php tersebut. Sebelumnya, yang perlu diketahui adalah class Article ini extend ke
kelas Model, dimana kelas tersebut adalah bawaan dari laravel itu sendiri. Di kelas Model ini banyak
function yang nantinya bisa kita manfaatkan dalam fetching record. Termasuk save untuk simpan
data, find untuk menemukan data, dll.

• Setelah kita sudah mengetahui pembuatan modelnya, kita akan mulai bermain dengan
beberapa fungsi yang ada di eloquent menggunakan php tinker, untuk memperjelas beberapa

Modul Pelatihan Dasar Laravel 33


fungsi yang disediakan oleh laravel untuk memanipulasi data dari database. Langkah
selanjutnya adalah buka cmd lalu arahkan ke folder laravel. Setelah itu, jalankan php
artisan tinker

• Buat sebuah objek baru bernama $artikel, yang nantinya akan merepresentasikan model
App\Article. Dengan ini kalian bisa memanipulasi tabel database melalui model Article.

• Hal pertama yang akan kita lakukan menggunakan tinker ini adalah mengisi table kita dengan
beberapa record. Di bab sebelumnya, kita telah membuat table articles lalu buka file tersebut.

Modul Pelatihan Dasar Laravel 34


• Setelah selesai, kita tinggal mencocokkan inputan kita dengan kolom yang telah kita tentukan
sebelumnya, yaitu dengan cara seperti di bawah ini:

Judul : Judul Pertama Saya

Isi : Ini adalah isi pertama

Timestamps : otomatis terisi

Published_at : menggunakan library carbon untuk memasukan date().

• Coba cast $artikel ke array dengan perintah seperti dibawah ini, pastikan nilai yang kita telah
masukkan sebelumnya sudah masuk.

Modul Pelatihan Dasar Laravel 35


• Jangan lupa untuk di-save.

• Untuk memastikan data sudah masuk atau belum, langsung saja akses phpmyadmin atau
apapun tool untuk akses ke mysql, masuk ke tabel articles dan lihat apakah datanya berhasil
masuk atau tidak.

• Setelah memastikan data sudah masuk, sekarang kita coba untuk me-“select” menggunakan
php tinker. Dengan format “App\Article::all()” maksudnya adalah fetch semua data yang ada
di tabel tersebut. Terus cast ke array.

Modul Pelatihan Dasar Laravel 36


• Dan satu record data berhasil ditampilkan.
• Jangan lupa bahwa kita juga bisa mengakses variable $artikel, yang berarti kita bisa
memanipulasi datanya. Mari kita coba untuk mengupdate data record. Caranya persis dengan
input seperti sebelumnya.
• Masukkan :
$artikel->judul =’Judul Pertama Diupdate’;
$artikel->save();

• Maka hasilnya akan seperti dibawah ini:

Modul Pelatihan Dasar Laravel 37


• Di atas kita memasukan record satu per-satu. Judul input, kemudian isinya kita input, baru
published_at kita input. Kita sebenarnya bisa mengirimkan beberapa value sekaligus dalam
array untuk secara langsung dimasukkan ke dalam tabel. Jalankan perintah berikut :

Setelah kita melakukan percobaan tersebut, hasil nya Error. Itu karena laravel sebenarnya
melindungi kita dari massAssignment. Apa itu massAssignment? pada dasarnya laravel melindungi
kita dari pengiriman data yang illegal di dalam array besar. Nah disini kita akan berusaha bagaimana
mengatasi error ini . Maka kita perlu menjelaskan ke laravel ada beberapa kolom yang sebenarnya
boleh di “massassginment” dengan cara kita masukkan ke dalam model Article kita.

• Setelah itu kembali ke tinker, jalankan kembali perintah create nya, maka dipastikan telah
masuk.

Modul Pelatihan Dasar Laravel 38


• Selanjutnya silahkan cek data tersebut sudah masuk atau belum dengan cara yang
diterangkan sebelumnya.

Modul Pelatihan Dasar Laravel 39


BAB VIII PENERAPAN ALUR MVC

Setelah kita mengerti beberapa hal dasar dari laravel, sekarang mari kita pelajari alur dari
Model, Controller, dan View. Yaitu controller mengambil data dari model kemudian ditampilkan ke
view. Namun sebelumnya, kita juga harus bermain dengan route. Langsung kita praktekin aja yok !
Kita coba untuk bermain dengan route dahulu, agar kita mengerti bagaimana cara kerja route itu
sendiri. Masukkan script di bawah ke routes.php.

Penjelasan: kita mendaftarkan url ngawur, yang nantinya akan menjalankan fungsi yang
mengeluarkan nilai “ini ngawur”. Untuk route yang normal dia hanya akan mengarahkan ke controller
tertentu, seperti tertulis di atasnya.
Kemudian jalankan di browser kalian,

Nah, sekarang karena kita mau menampilkan data artikel yang telah kita buat sebelumnya, maka kita
perlu controller baru, yang nantinya menghandle seluruh aksi manipulasi terhadap data artikel.
Jalankan perintah berikut dalam cmd.

Modul Pelatihan Dasar Laravel 40


Setelah itu, kalian akan menemukan sebuah file baru di dalam folder Controllers. Selanjutnya, kita
akan mencoba untuk memanfaatkan kontroler yang bernama ArtikelController tersebut untuk
menampilkan pesan, agar kita tahu cara kerjanya.

Tetapi jangan lupa agar bisa diakses kita perlu memberikan route kepada fungsi index yang ada di
ArtikelController ini.

Kemudian silahkan tampilkan atau akses melalui browser kalian.

Modul Pelatihan Dasar Laravel 41


Nah, karena kita sudah tahu basic dari kinerja kontroller itu, mari kita coba untuk bermain lebih serius,
dengan cara memanfaatkan perintah yang kita dapat dari tutorial sebelumnya yang kita jalankan
melalui php tinker ke dalam kontroller. Kita akan menampilkan seluruh artikel yang ada yaitu dengan
perintah “App\Article::all()”. Namun, karena terlalu panjang, maka kita definisikan “App\Article”
dahulu di atas sehingga kita hanya perlu mengetikkan “Article” saja.

Kemudian akses kembali url http://localhost:8000/artikel, maka akan menghasilkan array berisi data
artikel.

Sekarang permasalahannya adalah bagaimana menampilkan data tersebut ke dalam sebuah view?
Sehingga lebih manusiawi, tidak berbentuk JSON ataupun array mentah? Baik, mari kita kirimkan data
tersebut ke sebuah view bernama index. Berikut contoh skripnya :

Modul Pelatihan Dasar Laravel 42


Kemudian jangan lupa buat sebuah file view tentu saja dengan nama index, dan karena kita ingin file
kita teratur maka kita masukkan ke dalam folder artikel, seperti yang telah dituliskan didalam
kontroler diatas.

Buka masterview.blade.php, yang merupakan master dari tampilan yang akan kita gunakan. Pastikan
code agan sama dengan yang di bawah biar nanti tampilannya sama.

Sekarang buka index.blade.php yang tadi kita buat. ingat, kita akan menyisipkan code yang ada disini,
ke dalam masterview, masih ingat fungsi yield dan section kan? masih dong pasti. Maka index harus
extend dengan masterview.

Modul Pelatihan Dasar Laravel 43


Setelah itu silahkan akses lagi di browser kalian, cek apakah sudah berhasil ?

Nah itu baru kita test saja belum mengakses data dari kontroler sama sekali.
Sekarang, kita akan mengakses data yang telah di pass oleh kontroller ke view, memang agak
berbeda dengan CI atau php manual, karena blade sendiri sudah memiliki format tersendiri
dalam menampilkan data.

Silahkan cek langsung di browser kalian, apakah berhasil atau belum ?

Modul Pelatihan Dasar Laravel 44


Namun permasalahannya sekarang adalah, bagaimana caranya menampilkan salah satu artikel ? Ya
pada umumnya adalah mengklik pada judul, kemudian munculah isi artikel tersebut kan? Namun disini
judul artikelnya belum bisa diklik, maka kita perlu memberikan a href.

Untuk menampilkan salah satu berita saja maka kita membutuhkan sebuah view baru dan sebuah
fungsi baru, yaitu fungsi untuk menampilkan satu saja data dari artikel ketika judul di klik, dan biasanya
akan butuh sebuah “wildcard” atau id tertentu yang akan menjadi parameter penampil artikel. Maka
kita akan buat fungsi “baca” yang akan mengambil id dari artikel yang dilemparkan oleh judul yang
kita klik nantinya.

Jangan lupa untuk menambahkan di routingnya juga.

Untuk mengerti dan memahami cara kerjanya, sekali lagi kita lakukan ujicoba. Kita kembalikan saja
nilai id nya, dan kita lihat nantinya apakah berhasil atau tidak. Silahkan ujicoba dengan browser
dengan memasukan parameter apapun setelah artikel, contohnya :

Oke, karena kita sudah mengerti alur kerja nya, sekarang kita coba untuk memanfaatkan fungsi tadi
untuk menangkap id, namun jelas kita juga perlu menambahkan sebuah query dimana nantinya data
yang akan ditampilkan hanyalah yang memiliki id yang telah dikirimkan via url.

Modul Pelatihan Dasar Laravel 45


Mari kita uji coba ya !

It works ! hehe
Bentar bentar , kita coba deh kirimkan id=3 , yang mana kan artikel kita hanya ada id=1, dan
id=2. Dan wooops !! kok malah menampilkan kosong dan blank ? harusnya error.

Nah coba untuk mengatasi hal diatas, kita berikan sebuah if kondisi di kontroler, seperti contoh
dibawah :

Oke, kita coba yak ! seharusnya muncul eror 404 sehingga kita nanti mudah dalam handling errornya.

Modul Pelatihan Dasar Laravel 46


Hanya saja , kok terlalu panjang ya kalau setiap kontroler harus diberikan if if gitu, oh ! ternyata laravel
sudah menyediakan sebuah fungsi/metod yang bisa ngegantiin if tadi, cek this :

Dan bila kita cek lagi di browser , pasti laravel memberikan sebuah error. Maka kita gunakan findOrFail
aja deh ya lebih clean dan simple.
Oke, seperti halnya ketika kita menampilkan all artikel di awal tadi, maka kita butuh sebuah view untuk
handling tampilan dari single page yang nanti kita request dari mengklik judulnya. Namun sebelumnya,
kita return kan dulu di fungsi baca seperti di bawah :
Nb : lihat baris kode terakhir,ada 2 baris, satunya menggunakan ->with, dan satunya compact , hasilnya
sama saja, silahkan pilih salah satu.

Terus, buat deh baca.blade.php nya :

Buka file baca tadi, isikan seperti dibawah ini, hampir sama dengan yang awal tadi.

Modul Pelatihan Dasar Laravel 47


Langsung deh cek di browser kalian :D

karena sudah berhasil membuat fungsi baca, dan sudah berjalan dengan sempurna, maka kita kembali
ke index.blade.php karena tadi a href nya kita masih bernilai #, maka sekarang kita ganti dengan
melemparkan data id.

Banyak sebenarnya pilihan untuk menuliskan url pada href, gambar di atas adalah cara manual
termudah, ada juga cara lain berikut dilampirkan di bawah :

Modul Pelatihan Dasar Laravel 48


BAB IX PEMBUATAN FORM DAN DATA POST HANDLING

Sudah sepertiga langkah kita menuju ke benar-benar mengenal laravel 5 . Tetap semangat ya!
Nah sekarang kita akan belajar tentang bagaimana membuat form kemudian datanya akan kita
kirimkan ke controller yang kemudian seperti biasa, dieksekusikan oleh model untuk dikirimkan ke
database. Yoi, ga begitu jauh dengan framework lain, yuk segera kita mulai !
Langsung aja kita buka file route, kita masukkan sebuah route untuk page “tambah” atau create
terserah kalian mau kasih nama apa, yang penting sekarang adalah mengerti basic nya dulu.

Oke, disini kita buat url menggunakan create, dan akan mengarahkan ke fungsi tambah yang ada di
kontroller Artikel.

Dan jelas kita juga harus membuat sebuah fungsi baru bernama tambah di kontroller artikel.

Seperti yang kita tuliskan diatas berarti kita akan perlu sebuah view yang akan menghandle form yang
nantinya akan diisi artikel. Mari kita buat :

Kalau sudah silahkan cek apakah sudah berhasil dipanggil viewnya ? silakan akses langsung di browser.
Kalau sudah berhasil, maka yang selanjutnya kita lakukan adalah membuat form. Sebenarnya bisa saja
kita menuliskan manual form kita, manual berupa html begitulah yang dimaksud, tapi disini kita akan
sekalian belajar bagaimana pull sebuah package dari composer yang nantinya juga kita bisa gunakan
untuk membuat form dengan sangat mudah! Pada laravel 5.2, package yang digunakan dalam
membuat form adalah laravelcollective/html yang nantinya bisa digunakan untuk membuat form dan
html. Langkahnya sebagai berikut:
1. Buka file composer.json, tambahkan laravel collective/html pada require seperti berikut:
"require": {
"laravelcollective/html": "5.2.*"
}

Modul Pelatihan Dasar Laravel 49


2. pada cmd, ketik composer update untuk menginstall seluruh package laravelcollective
seperti berikut.

3. Kalau sudah, Buka file app.php yang berada di folder config, daftarkan collective/html seperti
contoh berikut :

Modul Pelatihan Dasar Laravel 50


Setelah selesai, scroll ke bawah kemudian juga tambahkan Facade, yang nantinya menjadi alias ketika
kita ingin menggunakan fungsi ini. Dengan memanfaatkan facade ini, kita bisa menjadikan fungsi yang
ada dalam sebuah class menjadi seperti static function, dengan menggunakan facade ini class yang
kita buat lebih mudah untuk ditest dan dimaintain dari pada membuat static function secara
tradisional. Contohnya ya Route::get(), Input::get() dll. Lengkapnya cari sendiri di google.

Baik sekarang kita coba untuk membuat sebuah form, dengan menggunakan format berikut :

Modul Pelatihan Dasar Laravel 51


Nah sekarang kita coba untuk cek deh, sudahkan terksekusi dengan baik ? buka
localhost:8000/article/create, lalu..

Wooops !!! error, tak ditemukan query ? loh ? berarti create ini malah dikira sebuah parameter yang
dibaca oleh fungsi “baca” tadi dong ya ? jelas hasilnya no query result, karena select * from articles
where id=’create’ tidak ada ! Wah, jelas bagian routing yang salah ini. Kita kan mau create untuk
diarahkan ke fungsi “tambah” bukan malah ke fungsi “baca” . Kita coba dulu, apa benar malah eksekusi
fungsi “baca”.

Dan ternyataaaaaaaaaaaaaaaaaaa , benar !

Modul Pelatihan Dasar Laravel 52


Mari kita buka routes. Ternyata disanalah permasalahannya.

Namun solusinya sangat mudah, yaitu taruh route yang bawah, yaitu yang tambah, diatas dari Route
yang baca. Seperti dibawah ini :

Maka ketika kita eksekusi di browser :

Baik, setelah kita membuat form dan berhasil tereksekusi dengan benar, maka langsung kita coba deh
main-main membuat field satu aja dulu :

Modul Pelatihan Dasar Laravel 53


Dan tampilannya:

Buat formulir lengkapnya seperti contoh dibawah :


Nb : karena kita disini memakai css bootstrap maka saya menggunakan class dari bootstap biar mudah.

Setelah kita berhasil maka langsung cek di browser, kita lihat tampilannya bagaimana :

Modul Pelatihan Dasar Laravel 54


Oke formulir sudah siap, tinggal kita gunakan untuk input. eh, tapi untuk menyimpan data inputan kita
akan butuh satu aksi lagi dong, dalam konteks ini kita harus membuat sebuah fungsi baru di kontroller
sebagai data handler. Tapi sebelumnya kita buat routenya dulu . buka routes.php

Setelah itu kita buat sebuah fungsi baru di ArtikelController bernama “simpan” seperti yang telah kita
tuliskan di route tadi. Contohnya di bawah ini :

Nb : jangan lupa tambahkan use Illuminate


\Support\Facades\Request di bawah namespace. Kita menggunakan facade request karena berfungsi
sebagai penerima data dari inputan alias nge-fetch semua input.
Nah, kelas sudah siap, input sudah siap, namun jangan lupa, tadi actionnya kan kita daftarkan di route
dengan url “artikel” yang akan mengeksekusi fungsi “simpan” , bukannya url “create”. Coba lihat
sourcecode dengan mengeklik kanan pada browser.

Modul Pelatihan Dasar Laravel 55


Maka kita perlu mengubahnya , buka file tambah.blade.php ubah bagian berikut :

Save dan lihat hasilnya di browser :

Oke, sekarang kita test inputan dan apakah ter fetch secara sempurna semua data yang kita inputkan
? kalau data yang kita inputkan di “return” atau ditampilkan maka kita telah sukses !

Dan ketika kita klik “tambah” makaaaaaaaaaa ...

Modul Pelatihan Dasar Laravel 56


Yak ! Berhasil !
Nah, sekarang tinggal kita masukkan ke dalam database yang nantinya kita akan inputan ke formulir.
Dengan cara ubah fungsi simpan pada ArtikelController.

Penjelasan : published_at kan belum ada inputan, maka kita akali dengan input dari library carbon
yang menunjukan tanggal dan waktu saat input artikel. Kemudian setelah data berhasil diinputkan,
akan di redirect ke halaman artikel, yang artinya langsung kelihatan hasilnya nanti.
Setelah save, maka kita coba lagi input :

Modul Pelatihan Dasar Laravel 57


Dann.... berhasil!

Tapi kok masih ada yang aneh, malah judul yang jadul malah di atas sendiri ? Wah,harus diedit ini.
Buka fungsi index di kontroller artikel :

Penjelasan : dengan fungsi latest, maka seakan akan menjalankan order by published_at desc.

Modul Pelatihan Dasar Laravel 58


Modul Pelatihan Dasar Laravel 59
BAB X PENANGANAN DATE DAN QUERY SCOPE

Kali ini kita akan membahas sedikit tentang penanganan tanggal, atau date time, dan juga
penggunaan Query scope. Dua hal ini pastinya akan sangat membantu kita dalam pembuatan aplikasi
yang powerful. Untuk teorinya sih, cari aja di google banyak, sekarang kita langsung aja praktek.
Untuk awalnya kita buka fungsi “simpan” yang ada di kontroler artikel, kita buat agak ringkas biar
enak dipandang menjadi seperti berikut ( dibuat inline ).

2. Nah untuk formulir yang tadinya kita belum buat field published_at, sekarang kita buat, agar
nanti bisa kita buat main-main. Tambahkan line code berikut di view dari tambah artikel tadi.

Penjelasan : kita menggunakan input dengan type data date, dan nilai defaultnya adalah date(‘Y-m-d’)
alias hari ini.
Maka ketika kita akses akan memiliki tampilan seperti berikut :

Modul Pelatihan Dasar Laravel 60


3. Gimana kalau kita coba untuk mengisi sebuah artikel baru dengan dipublikasikannya tanggal
“31-Maret-216” (fyi, sekarang tanggal 23 Maret 2016) sehingga akhirnya menghasilkan data seperti di
bawah ini :

Kemudian juga kita cek langsung ke database apakah datanya benar masuk, dan bagaimana
bentuknya?

4. Setelah itu mari kita lihat pada view artikelnya, apakah sudah benar atau tidak .

Wupps ! bukannya tadi kita menginputkan artikel ini akan dipublikasi tanggal 31 Maret 2016, ya ? kok
bisa muncul sih? Logikanya, Seharusnya inputan yang tampil adalah artikel yang published_at nya
adalah kurang dari atau sama dengan tanggal sekarang ? iya kan?

5. Nah, untuk menampilkan sesuai dengan logika yang benar maka kita perlu mengubah query
yang ada di fungsi index yang menghandle page artikel, di kontroler milik artikel a.k.a ArtikelController:

Modul Pelatihan Dasar Laravel 61


Maka setelah pas, yaitu tampilkan published_at yang terakhir, yang mana published_atnya adalah <=
tanggal sekarang.

6. Tetapi sepertinya terlalu panjang ya untuk ukuran query biasa, dan itu wherenya hanya satu,
kalau nanti banyak bagaimana? Bisakah diperpendek? Jawabnya bisa! Umpama kita mau baris“->
where(‘published_At’,’<=’,Carbon::now())” kita perpendek menjadi “->dipublish()” pendek kan ? maka
caranya adalah seperti berikut:

Kemudian kita buka model kita, Article.php, dan tambahkan sebuah scope query baru dengan format
“scopeNamamethod” kemudian baris code yang tadi kita mau ubah kita pastekan disana seperti
dibawah :

Modul Pelatihan Dasar Laravel 62


Yups. Nice and clean !
7. Nah sekarang kita akan coba bermain dengan data ‘carbon’ atau ‘carbon instance’. Perhatikan
kode berikut :

dd() berfungsi untuk menampilkan data pada objek. Kita coba gunakan data created_at yang
merupakan otomatisasi generated oleh laravel. Maka ketika kita akses yang muncul adalah :

Karena berbentuk ‘carbon instance’ maka kita sangat mudah untuk memanipulasinya, contohnya kita
akan menampilkan tahunnya saja :

Modul Pelatihan Dasar Laravel 63


Atau bulan saja :

Atau mungkin keperluan lain, yaitu menambah hari dari hari yang ada :

Atau seperti twitter, yaitu menampilkan seperti “diupdate 7 hari yang lalu” :

8. Kita coba untuk membandingkan dengan timestamp buatan kita yaitu published_at, apakah
juga bisa kita manipulasi seperti timestamp buatan laravel ?

Modul Pelatihan Dasar Laravel 64


Kita jalankan :

Ternyata keluarannya adalah string, jelas kita tidak bisa manipulasi sesuka hati seperti ketika
bentuknya carbon instance. Maka kita perlu merubahnya menjadi sebuah carbon instance juga.

9. Cara mengubahnya adalah dengan menambahkan sebuah variable $date yang berisi
published_at pada model kita seperti yang dicontohkan berikut :

Dan ketika kita cek datanya :

Modul Pelatihan Dasar Laravel 65


BAB XI FORM REQUEST DAN VALIDASI

Setelah berpusing ria dengan pembuatan form, date handling, dan lain sebagainya. Sekarang saat nya
kita bermain dengan form request. Agar data yang dikirim berkualitas, jelas kita harus validasi bukan?
Memang validasi bisa dilakukan secara client scripting, namun itu saja tidak cukup, harus dari server
side scripting juga diberi validasi. Maka mari langsung kita masuk ke pelajaran selanjutnya :
1. Mari kita coba untuk update sebuah artikel tapi kosongan, kita coba apakah bisa ?

Klik tambah dan akhirnya ? coba cek database.

Kosongan beneran, berarti belum ada validasi sama sekali. Kita coba cek di database.

2. Seperti yang kita tahu, bahwa kita menggunakan Request::all() untuk memfetch seluruh data
inputan bukan? Nah pilihannya adalah beri validasi di kontroller, dan gunakan
Illuminate\Support\Facades\Request seperti yang kita lakukan sebelumnya.

Modul Pelatihan Dasar Laravel 66


3. Tapi kita tidak akan menggunakan itu, melainkan kita akan menggunakan sebuah fasilitas yang
sudah disediakan oleh laravel 5, yaitu fitur request. Maka kita perlu membuat sebuah file request yang
akan menghandle seluruh request yang akan di fetch di fungsi “simpan”. Dan disana pula nanti kita
akan memasukkan validasi.
Berikut cara nya , kita menggunakan artisan :

Setelah itu cek apakah file TambahArtikelRequest sudah ada di folder Requests yang berada di folder
Http.

4. Buka file tersebut, kemudian kita edit seperti dibawah ini :

Modul Pelatihan Dasar Laravel 67


Penjelasan : fungsi auth belum kita gunakan, maka kita rubah menjadi return true saja. Kemudian
untuk judul maka harus diisi dan min 5 karakter, isi harus diisi dan min 10 karakter, untuk publ_at
wajib diisi dan typenya date.

5. Kembali ke ArtikelController.php kita akan menggunakan file Request yang telah kita buat
tadi:

Kemudian kita gunakan di fungsi “simpan” menggantikan Request yang telah awal kita gunakan tadi.
Yaitu nantinya akan berubah menjadi seperti ini :

Modul Pelatihan Dasar Laravel 68


Penjelasan : ketika request dari inputan masuk, maka akan masuk dahulu ke TambahArtikelRequest
yang kemudian dicocokan dengan syarat validasi, bila mengembalikan nilai true, maka akan
menjalankan Article::create, namun bila false dia akan mengembalikan ke halaman inputan dan
mengembalikan nilai error.

6. Kita coba validasinya apakah sudah berhasil atau tidak .

Gagal bukan ? karena kita tidak di redirect , berarti kita berhasil membuat validasinya.
7. Mari kita buktikan bahwa ada error yang dilemparkan oleh Request handler yang kita buat
tadi yaitu dengan menambahkan code berikut ke file tambah.blade.php, di atas @stop

Silahkan refresh browser agan, lihat apakah sudah ada tampilan errorbag nya ?

Modul Pelatihan Dasar Laravel 69


8. Ayo kita coba lagi input artikel dengan format yang salah dan tidak sesuai dengan validasi,
apakah errorbag bisa mendeteksi error mana? Dan membuktikan error handler benar benar membuat
sebuah error message.

Daaaan...bener aje, tuh banyak errornya, karena ga sesuai dengan validasi !


9. Dan akhirnya bagaimana kita memanfaatkan errorbag untuk menjadi sebuah pemberitahuan
kepada user, manakah perbuatan mereka yang salah menurut sistem :

Kita rubah vardump tadi menjadi kode seperti diatas. Yang berfungsi membuat sebuah list error dari
array yang dihasilkan errorbag tadi.

Modul Pelatihan Dasar Laravel 70


10. Dan langsung kita test, dengan inputan yang salah, maka hasilnya :

Dan juga jangan lupa kita tes dengan artikel yang sesuai dengan validasi :

Modul Pelatihan Dasar Laravel 71


REFERENSI

https://en.wikipedia.org/wiki/Laravel

https://laravel.com/docs/5.1/installation

http://pondokprogrammer.com/wp-content/uploads/2014/12/tutorial_dasar_laravel.pdf

http://www.tentorweb.web.id/2015/05/

https://laravelcollective.com/docs/5.2/html

Modul Pelatihan Dasar Laravel 72