Halo semuanya, kembali lagi di sahretech. Baiklah pada artikel tutorial kali ini kita akan membahas join table di laravel menggunakan query builder. Bagi kalian yang terbiasa menggunakan perintah query di php native, kalian juga bisa menggunakan query builder untuk terhubung ke database. Penasaran?, ayo ikuti tutorialnya berikut ini.
Query Builder
Query builder adalah perintah atau antarmuka yang disediakan oleh laravel untuk terhubung ke database. Query builder dapat digunakan untuk menjalankan berbagai operasi database seperti CRUD, dan termasuk juga join table. Query builder dibuat menggunakan parameter PDO untuk melindungi aplikasi kalian dari serangan SQL injeksi. Query builder menjadi salah satu pilihan yang bisa kalian gunakan jika perintah eloquent masih membingungkan.
Cara Membuat Join Table dengan Query Builder
Persiapan awal sebelum masuk ke inti tutorial adalah kalian harus menginstall laravel terlebih dahulu. Untuk versinya silahkan install laravel versi 6 atau 7. Dan untuk destinasi folder projectnya sendiri bebas.
Dan bagi kalian yang sudah mengerti dasar-dasar laravel dan hanya ingin belajar fitur join table dengan menggunakan query builder silahkan langsung ke step 4 di bawah ini.
1. Membuat Database
Setelah kalian berhasil menginstall fresh laravel, selanjuntya buat sebuah database baru dengan nama laravel. Langkahnya, pertama kalian hidupkan apache dan mysql terlebih dahulu, lalu akses localhost/phpmyadmin dan buat sebuah database baru dengan nama laravel.
|
Database laravel |
Ok, project laravel dan database kalian sudah selesai dibuat. Selanjutnya buka folder project dengan web editor kalian dan jalankan fresh laravel yang baru diinstall dengan menggunakan perintah php artisan serve dengan menggunakn cmd. Dan jangan lupa sebelum menjalankan perintah php artisan pastikan kalian berada di dalam folder project tersebut.
2. Membuat Tabel
Ok, selanjuntya kita akan membuat 2 tabel yang akan saling terhubung. Pertama buatlah migration dengan nama barang. Buka cmd lalu jalankan perintah di bawah ini untuk membuat migration.
php artisan make:migration create_barang_table
Setelah migration baru sukses dibuat. Selanjutnya buka file migrasi yang baru kita buat sebelumnya. Buka Folder database/migrations lalu cari file create_barang_table, kemudian ganti script yang ada di dalam file tersebut dengan script yang ada di bawah ini.
public function up()
{
Schema::create('barang', function (Blueprint $table) {
$table->bigIncrements('id_barang');
$table->string('nama_barang');
$table->string('jenis_barang');
$table->string('harga_barang');
$table->timestamps();
});
}
Selanjuntya buat sebuah migration baru dengan nama detail barang. Buka cmd lalu jalankan perintah di bawah ini untuk membuat migration.
php artisan make:migration create_detail_barang_table
Setelah migration sukses dibuat. Selanjutnya buka migration yang telah kita buat sebelumnya. Buka database/migration lalu cari file create_detail_barang_table yang kita buat sebelumnya, kemudian ganti script yang ada di dalamnya dengan script yang ada di bawah ini.
public function up()
{
Schema::create('detail_barang', function (Blueprint $table) {
$table->bigIncrements('id_detail_barang');
$table->integer('id_barang');
$table->string('berat');
$table->string('pabrik');
$table->string('alamat_pabrik');
$table->string('supplier');
$table->text('keterangan');
$table->timestamps();
});
}
3. Melakukan Migrasi
Selanjutnya jalankan perintah di bawah ini untuk membuat tabel baru di dalam database.
php artisan migrate
Jika perintah di atas berhasil dijalankan, maka semua file migration yang ada di dalam project laravel akan dibuat menjadi tabel ke dalam database. Selanjutnya kita isi data dummy ke dalam tabel barang dan tabel detail barang contohnya seperti gambar di bawah ini.
|
Data dummy table barang |
|
Data dummy detail_barang |
4. Membuat Controller
Selanjuntya kita akan membuat controller untuk menampung logic dari aplikasi yang kita buat. Jika kalian hanya membutuhkan cara melakukan join di laravel maka tahap ini adalah tahap yang penting bagi kalian. Jalankan perintah berikut ini untuk membuat controller baru dengan nama BarangController
php artisan make:controller BarangController
Selanjutnya buka BarangController.php yang telah kita buat sebelumnya di dalam folder app/Http/Controllers dan ganti script yang ada di dalamnya dengan script di bawah ini. Perhatikan juga komentar yang berada di samping kanan dan atas untuk mengetahui fungsi setiap bari code.
<?php
namespace App\Http\Controllers;
use Illuminate\Http\Request;
use DB;
class BarangController extends Controller
{
public function index(){
$data = DB::table('barang')
->join('detail_barang', 'detail_barang.id_barang', '=', 'barang.id_barang')
->get();
return view('barang')->with('data', $data);
}
}
Dengan menggunakan query builder maka kita tidak membutuhkan model lagi, karena kita bisa mengambil data tabel mananpun, dan query builder ini juga dapat digunakan di dalam blade view.
5. Membuat View
Untuk menampilkan data yang kita kirim dari controller, kita membutuhkan sebuah view. Masuk ke folder resources/views lalu buat sebuah file baru dengan nama barang.blade.php. Buatlah struktur kodinangannya seperti script di bawah ini.
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<meta http-equiv="X-UA-Compatible" content="ie=edge">
{{-- import bootstrap untuk memberikan style --}}
<link rel="stylesheet" href="https://cdn.jsdelivr.net/npm/bootstrap@4.5.3/dist/css/bootstrap.min.css"
integrity="sha384-TX8t27EcRE3e/ihU7zmQxVncDAy5uIKz4rEkgIXeMed4M0jlfIDPvg6uqKI2xXr2" crossorigin="anonymous">
<title>Latihan Query Builder</title>
</head>
<body>
<br>
<div class="container jumbotron text-center">
<h1>Latihan Menampilkan 2 Tabel Relasi degan Query Builder</h1>
<br><br>
<table class="table table-striped">
<tr>
<th>No</th>
<th>Barang</th>
<th>Jenis</th>
<th>Harga</th>
<th>Berat</th>
<th>Dibuat</th>
<th>Alamat Pembuatan</th>
<th>Supplier</th>
<th>Keterangan</th>
</tr>
{{-- $data adalah variabel yang dikirmkan dari controller dan diinisialisasi sebagai $item --}}
{{-- sedangkan $k adalah index dari tiap data --}}
@foreach ($data as $k => $item)
<tr>
{{-- karena index dimulai dari 0 maka kita perlu menambahkan angka 1 --}}
<td>{{$k+1}}</td>
<td>{{$item->nama_barang}}</td>
<td>{{$item->jenis_barang}}</td>
<td>{{$item->harga_barang}}</td>
<td>{{$item->berat}}</td>
<td>{{$item->pabrik}}</td>
<td>{{$item->alamat_pabrik}}</td>
<td>{{$item->supplier}}</td>
<td>{{$item->keterangan}}</td>
</tr>
@endforeach
</table>
</div>
</body>
</html>
6. Membuat Route
Langkah terakhir, buatlah sebuah route baru di dalam web.php. Buka folder routes lalu buka file web.php tambahkan baris code ini bagian paling bawah.
Route::get('/barang', 'BarangController@index');
Baiklah, setelah kalian mengikuti step by step tutorial di atas selanjutnya jalankan project laravel ini di browser dengan menggunakan php artisan serve, lalu buka alamat ini http://127.0.0.1:8000/barang. Jika step by stepnya benar maka hasilnya akan tampak seperti gambar di bawah ini.
|
Hasil penggabungkan 2 buah tabel |
Sekian tutorial cara membuat join table di laravel dengan menggunakan query builder. Semoga artikel ini bermanfaat bagi para pembaca sekalian, kurang lebihnya saya mohon maaf dan apabila ada script yang kurang dimengerti silahkan tinggalkan pertanyaan kalian di kolom komentar di bawah ini. Sampai jumpa di tutorial pemrograman keren lainnya. Happy Coding 😀
Infonya sangat bermanfaat sekali kak 👌🏻
ReplyDeletealhamdulillah terima kasih banyak mas kunjungannya :)
Deleteyg ditampilkan dati table yg bsudah di join yg mana ?
ReplyDeleteDi gambar paling bawah ada gambar tabel. Itu hasil gabungan dari 2 tabelnya mas
DeleteCukup ini saja ya??
ReplyDelete$data = DB::table('barang')
->join('detail_barang', 'detail_barang.id_barang', '=', 'barang.id_barang')
->get();
jika ada 3 atau 4 tabel yang mau di join bgmn?
iya cukup itu saja dan klo mau join lebih dari satu tabel
Delete$data = DB::table('barang')
->join('detail_barang', 'detail_barang.id_barang', '=', 'barang.id_barang')
->join('stok_barang', 'stok_barang.id_barang', '=', 'barang.id_barang')
->get();