Eloquent Laravel
Pada tutorial ini kita hanya akan berkenalan dengan eloquent, dan belajar cara penggunaan eloquent laravel. Pada tutorial selanjutnya baru kita akan masuk ke cara membuat CRUD dengan eloquent laravel atau eloquent orm.
Oke kita mulai dari pengertian eloquent laravel.
Pengertian Eloquent Laravel
Seperti yang dijelaskan pada dokumentasi laravel, Eloquent adalah sebuah fitur untuk mengelola data yang ada pada database dengan sangat mudah. Eloquent ORM menyediakan fungsi-fungsi active record, atau fungsi-sungsi query sql untuk mengelola data pada database.
Dan fungsi query nya semua sudah dibuat dan disediakan secara default dalam laravel. jadi kita tidak perlu lagi mengetik query sql yang panjang-panjang.
Simpel nya gini, jadi dengan Eloquent, kita bisa mengelola data yang ada pada database dari hanya satu buah model. misalnya kita punya table siswa, maka kita juga akan mempunyai sebuah model dengan nama siswa, nah dengan model siswa ini kita bisa mengelola data-data yang ada pada tabel siswa dengan mudah dan cepat.
Kita bisa menginput data, mengedit, menampilkan, mengupdate, bahkan kita juga bisa menggunakan relasi tabel dengan sangat mudah!.
Struktur penulisan coding nya pun sangat singkat.
Jika secara manual pada PHP native, jika kita ingin mengakses atau menampilkan data dari table siswa, biasanya kita menggunakan query βselect * from siswaβ kan?
Nah, jika kita menggunakan eloquent laravel, kita cukup mendefinisikan nama modelnya, kemudian kita bisa langsung menggunakan fungsi all() untuk mengambil semua data pada table siswa. jadinya codingan kita sangat pendek, lumayan bisa menghemat tenaga untuk ngetik panjang-panjang :D.
Nah, sampai di sini mudah-mudahan teman-teman sudah bisa menangkap pengertian eloquent orm ini. intinya eloquent adalah fitur bantuan yang disediakan oleh laravel untuk memudahkan kita mengelola data yang ada pada database.
Persiapan
Pastikan teman-teman sudah memiliki database, dan sudah melakukan konfigurasi database pada file .env nya.
1
2
3
4
5
6
|
DB_CONNECTION=mysql
DB_HOST=127.0.0.1
DB_PORT=3306
DB_DATABASE=belajar_laravel
DB_USERNAME=root
DB_PASSWORD=root
|
Silahkan sesuaikan dengan konfigurasi database teman-teman, di sini saya sudah memiliki sebuah database dengan nama belajar_laravel.
Kemudian sebagai contoh kita akan membuat sebuah table data dan sebuah model yang akan meng-handle table ini.
Misalnya sebagai contoh di sini kita akan membuat sebuah table untuk meyimpan data pegawai. jadi kita buat dulu model pegawai nya.
Untuk membuat model pada laravel, kita bisa membuatnya secara manual atau kita juga bisa menggunakan perintah php artisan.
Untuk membuat model menggunakan php artisan, silahkan buka terminal atau cmd, kemudian masuk ke direktori project laravelnya, dan ketik perintah berikut.
1
|
php artisan make:model Pegawai
|
atau jika teman-teman ingin membuatkan file migration untuk table/model pegawai ini teman-teman bisa menulis perintah berikut.
1
|
php artisan make:model Pegawai –m
|
atau
1
|
php artisan make:model Pegawai —migration
|
Tutorial migration sudah kita bahas pada tutorial sebelumnya, silahkan teman-teman baca pada tutorial Migration Laravel sebelumnya.
Perhatikan pada gambar di atas, kita memerintahkan untuk membuat model dengan nama βPegawaiβ. tapi kenapa file migration yang dibuat namanya βcreate_pegawais_tableβ ??
Ini karena secara otomatis laravel menerapkan sistem plural atau jamak. dengan bahasa inggris tentunya. jadi pada saat kita membuat model dengan nama pegawai, laravel menganggap nama table yang akan kita buat adalah pegawais.
Jika kita membuat model dengan nama member, maka laravel akan menganggap table nya adalah members.
Jika kita membuat model dengan nama barang, maka laravel menganggap table nya adalah barangs.
Jika kita membuat model dengan nama admin, maka laravel menganggap table nya adalah admins.
Tidak masalah, laravel hanya ingin memudahkan kita dalam penamaan, kita bisa mengatasi masalah ini nantinya jika kita tidak ingin menggunakan plural dari laravel. kita skip saja dulu. akan kita bahas nanti pada bagian model.
Sekarang kita selesaikan bagian migration saja dulu.
Buka file migration create_pegawais_table nya tadi, file migration yang lain boleh teman-teman hapus saja dulu, agar tidak pusing.
Kemudian tambahkan kolum-kolum yang ingin kita buat pada table pegawai. caranya sudah dijelaskan pada tutorial sebelumnya tentang migration laravel. karena ini hanya contoh, saya akan menambahkan kolum id, nama dan alamat saja.
belajar_laravel/database/migrations/2019_01_07_061805_create_pegawais_table
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
|
<?php
use Illuminate\Support\Facades\Schema;
use Illuminate\Database\Schema\Blueprint;
use Illuminate\Database\Migrations\Migration;
class CreatePegawaisTable extends Migration
{
/**
* Run the migrations.
*
* @return void
*/
public function up()
{
Schema::create(‘pegawai’, function (Blueprint $table) {
$table–>increments(‘id’);
$table–>string(‘nama’);
$table–>text(‘alamat’);
$table–>timestamps();
});
}
/**
* Reverse the migrations.
*
* @return void
*/
public function down()
{
Schema::dropIfExists(‘pegawai’);
}
}
|
Perhatikan pada file migration di atas, karena kita akan membuat table βpegawaiβ, bukan βpegawaisβ, jadi kita ubah menjadi βpegawaiβ.
Kemudian migrate dengan mengetikkan perintah berikut.
1
|
php artisan migrate
|
Oke sekarang sudah berhasil migration, dan lihat database belajar_laravel. kita sudah punya table pegawai sekarang, sesuai dengan yang kita buat pada file migration pegawai.
Cara Penggunaan Eloquent Laravel
Sampai tahap ini kita sudah siap untuk menggunakan Eloquent laravel.
Di sini kita coba dasar nya saja dulu, pada tutorial selanjutnya baru kita akan masuk ke tahap yang lebih komplek dengan langsung belajar membuat CRUD dengan eloquent.
Kita akan mencoba menampilkan data dari database dengan dengan menggunakan fitur eloquent laravel.
Karena kita akan mencoba menampilkan data dari table pegawai, kita perlu beberapa data testing pada table pegawai. saya akan mencoba menginput data dummy ke table pegawai dengan menggunakan fitur seeding laravel.
Fitur seeding laravel juga sudah dibahas sebelumnya. silahkan teman-teman baca lagi tutorial seeding dan faker pada laravel.
Karena agak capek dan menyita waktu jika kita menginput data ke table pegawainya secara manual. jadi kita gunakan saja fitur yang sudah ada di laravel.
Menginput data dummy dengan Faker & Seeding Laravel
Buat class seeding nya terlebih dulu, di sini saya membuat class seeding dengan nama PegawaiSeeder.
1
|
php artisan make:seed PegawaiSeeder
|
Maka akan dibuatkan sebuah file seeder dalam belajar_laravel/database/seeds.
Buka file PegawaiSeeder.php nya dan terapkan Faker di dalamnya.
belajar_laravel/database/seeds/PegawaiSeeder.php
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
|
<?php
use Illuminate\Database\Seeder;
use Faker\Factory as Faker;
class PegawaiSeeder extends Seeder
{
/**
* Run the database seeds.
*
* @return void
*/
public function run()
{
// data faker indonesia
$faker = Faker::create(‘id_ID’);
// membuat data dummy sebanyak 10 record
for($x = 1; $x <= 10; $x++){
// insert data dummy pegawai dengan faker
DB::table(‘pegawai’)->insert([
‘nama’ => $faker–>name,
‘alamat’ => $faker–>address,
]);
}
}
}
|
Syntax di atas sudah pernah saya jelaskan pada tutorial Seeding & Faker pada laravel.
Silahkan teman-teman baca lagi tutorial tentang seeding dan faker pada laravel.
Dan jalankan seeder nya dengan perintah php artisan.
1
|
php artisan db:seed —class=PegawaiSeeder
|
dan sekarang kita sudah punya data dummy untuk mencoba fitur eloquent nantinya.
Eloquent Laravel
Setelah kita punya data untuk mencoba fitur Eloquent Laravel, sekarang buka lagi file model Pegawai.php.Seperti yang saya jelaskan sebelumnya, laravel menerapkan sistem plural atau jamak pada penamaan model dan table. maka kita set dulu nama table yang akan di handle oleh model Pegawai.php. karena secara default laravel menganggap table yang di handle oleh model Pegawai.php adalah table pegawais. sedangkan nama table kita adalah pegawai.
Jadi kita bisa melakukan pengaturan pada model Pegawai.php dengan menambahkan perintah
1
|
protected $table = “pegawai”;
|
agar model Pegawai.php men-handle table pegawai, bukan pegawais.
belajar_laravel/app/Pegawai.php
1
2
3
4
5
6
7
8
9
10
|
<?php
namespace App;
use Illuminate\Database\Eloquent\Model;
class Pegawai extends Model
{
protected $table = “pegawai”;
}
|
kemudian buat route untuk menampilkan data pegawai dengan eloquent.
belajar_laravel/routes/web.php
1
2
3
4
5
6
7
8
|
<?php
Route::get(‘/’, function () {
return view(‘welcome’);
});
Route::get(‘/pegawai’, ‘PegawaiController@index’);
|
di sini kita membuat pengaturan saat route β/pegawaiβ diakses, maka akan dijalankan method index pada PegawaiController.php.
1
|
Route::get(‘/pegawai’, ‘PegawaiController@index’);
|
Buat controller dengan nama PegawaiController.php menggunakan php artisan.
1
|
php artisan make:controller PegawaiController
|
Kemudian pada PegawaiController.php, ketik perintah berikut.
belajar_laravel/app/Http/controllers/PegawaiController.php
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
|
<?php
namespace App\Http\Controllers;
use Illuminate\Http\Request;
// panggil model pegawai
use App\Pegawai;
class PegawaiController extends Controller
{
public function index()
{
// mengambil data pegawai
$pegawai = Pegawai::all();
// mengirim data pegawai ke view pegawai
return view(‘pegawai’, [‘pegawai’ => $pegawai]);
}
}
|
perhatikan pada controller pegawai di atas, pertama pada bagian luar class kita panggil model Pegawai. sesuai dengan letak model yang terletak dalam folder app.
1
|
use App\Pegawai;
|
kemudian pada method atau function index (sesuai dengan yang kita buat pada route) kita menggunakan fitur eloquent dengan mengambil data dari table pegawai hanya dengan fungsi all().
dan terakhir kita passing datanya ke view pegawai.
Buat sebuah view baru dengan nama pegawai.blade.php.
belajar_laravel/resources/views/pegawai.blade.php
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
|
<!DOCTYPE html>
<html>
<head>
<title>Tutorial Laravel #20 : Eloquent Laravel</title>
</head>
<body>
<h1>Data Pegawai</h1>
<h3>www.malasngoding.com</h3>
<ul>
@foreach($pegawai as $p)
<li>{{ “Nama : “. $p–>nama . ‘ | Alamat : ‘ . $p–>alamat }}</li>
@endforeach
</ul>
</body>
</html>
|
Pada view pegawai.blade.php, kita tangkap data yang dikirim dari controller dan kita tampilkan dengan menggunakan foreach.
1
2
3
4
5
|
<ul>
@foreach($pegawai as $p)
<li>{{ “Nama : “. $p–>nama . ‘ | Alamat : ‘ . $p–>alamat }}</li>
@endforeach
</ul>
|
Oke selesai teman-teman.
Coba teman-teman jalankan.
1
|
php artisan serve
|
dan akses
localhost:8000/pegawai
Maka hasilnya akan seperti berikut.
Berkenalan Lebih Dalam Dengan Eloquent
Jika sebelumnya kita telah berhasil menampilkan semua data yang ada pada table pegawai, sekarang kita akan berkenalan sedikit lebih jauh dengan beberapa fungsi eloquent yang bisa teman-teman gunakan dikemudian hari pada saat membangun aplikasi atau sistem informasi.
Eloquent telah menyediakan beberapa fungsi lainnya seperti menyeleksi data berdasarkan ID data, menampilkan record data yang pertama, meyeleksi data yang lebih spesifik (WHERE), dan masih banyak lagi.
Mendapatkan Data Record Yang Pertama ( first () )
Pada method index(), coba teman-teman gunakan fungsi first(). seperti contoh berikut.
1
2
3
4
5
6
7
8
9
|
public function index(){
// mengambil data pegawai yang pertama
$pegawai = Pegawai::first();
// mengirim data pegawai ke view pegawai
return view(‘pegawai’, [‘pegawai’ => $pegawai]);
}
|
Maka yang tampil adalah data pegawai yang pertama.
Mendapatkan Data Berdasarkan ID ( find() )
Untuk menyeleksi data pegawai berdasarkan id, kita bisa menggunakan fungsi find().
Perhatikan contoh berikut.
1
2
3
4
5
6
7
8
9
|
public function index(){
// mengambil data pegawai yang id nya 1
$pegawai = Pegawai::find(1);
// mengirim data pegawai ke view pegawai
return view(‘pegawai’, [‘pegawai’ => $pegawai]);
}
|
Di dalam parameter fungsi find() teman-teman bisa mengisi id pegawai yang ingin ditampilkan.
Pada contoh di atas, kita memasukkan angka 1, berarti yang ditampilkan adalah data pegawai Raisa Suci Hartati.
Seleksi Data dengan ( where() )
Butuh Query yang lebih spesifik lagi?
Kita bisa gunakan fungsi where. misalnya kita ingin menyeleksi data pegawai yang bernama Jamal Uwais, maka querynya seperti berikut.
1
2
3
4
5
6
7
8
9
|
public function index(){
// mengambil data pegawai yang bernama Jamal Uwais
$pegawai = Pegawai::where(‘nama’, ‘Jamal Uwais’)->get();
// mengirim data pegawai ke view pegawai
return view(‘pegawai’, [‘pegawai’ => $pegawai]);
}
|
Atau
1
2
|
// mengambil data pegawai yang bernama Jamal Uwais
$pegawai = Pegawai::where(‘nama’, ‘=’ , ‘Jamal Uwais’)->get();
|
Ada banyak yang bisa kita terapkan fungsi where() ini, di antaranya jika teman-teman ingin menampikan data pegawai yang id nya lebih besar dari 10, teman-teman bisa menulisnya seperti berikut.
1
2
|
// mengambil data pegawai yang id nya lebih besar dari 10
$pegawai = Pegawai::where(‘id’, ‘>’ , 10)->get();
|
jika ingin lebih besar sama dengan 10,
1
2
|
// mengambil data pegawai yang id nya lebih besar sama dengan 10
$pegawai = Pegawai::where(‘id’, ‘>=’ , 10)->get();
|
Jika ingin menampilkan data pegawai yang id nya lebih kecil dari, bisa menggunakan tanda β<β.
Sangat simpel.
Jika ingin membuat pencarian data, misalnya ingin menampilkan semua data pegawai yang ada huruf a nya, maka penulisannya seperti berikut.
1
2
|
// mengambil data pegawai yang di namanya ada huruf a
$pegawai = Pegawai::where(‘nama’, ‘like’ , ‘%a%’)->get();
|
Membuat Pagination
Jika teman-teman ingin membuat pagination,
Teman-teman bisa gunakan fungsi paginate(). dan isi paremeternya dengan berapa jumlah record data yang ingin ditampilkan perhalaman.
1
2
|
// menampilkan 10 data pegawai per halaman
$pegawai = Pegawai::paginate(10);
|
Selanjutnya untuk membuat link penomoran paginationnya, baca di sini.
Masih ada banyak sekali kelebihan kita menggunakan Eloquent laravel. ini hanya contoh kecilnya saja. ini hanya contoh cara penggunaan Eloquent Laravel.
Bahkan kita juga bisa langsung menerapkan relasi table seperti misalnya Many to Many atau One to Many dan lain-lain.