Eloquent ORM Laravel


Eloquent ORM (Object Relation Maping) adalah fitur yang sangat saya suka , dengan Eloquent kita bisa dengan mudah Menjalankan Query – query Database. 

Berikut adalah contoh menggunakan Eloquent Laravel. Kita buat 3 table relasi dengan mengunakan fitur Eloquent dengan Relasi One To One

Langkah pertama buat dulu table-table nya.

  1. Table Barang
    1. id
    2. kode
    3. nama
    4. satuan_id
    5. jenis_id
    6. harga_beli
    7. harga_jual
  2. Table Jenis Barang
    1. id
    2. jenis_barang
  3. Table Satuan
    1. id
    2. satuan
kedua buat model dengan mengunakan artisan 


php artisan make:model Barang
php artisan make:model JenisBarang
php artisan make:model SatuanBarang

Isi Model Barang
namespace App;
use Illuminate\Database\Eloquent\Model;
class Barang extends Model
{
    protected $table = 'barang';

    public function Jenis(){ //one to one table
      return $this->hasOne('App\JenisBarang','id');
    }
    public function Satuan(){ //one to one table
      return $this->hasOne('App\SatuanBarang','id');
    }
    public function Beli(){ //one to many table
      return $this->hasMany('App\BeliDetail','barang_id');
    }
}



Disini kenapa harus menggunakan perintah
protected $table
karena nama table yang kita miliki tidak singular, contoh : barangs.

Saya tambahkan kasus dengan menggunakan One to Many pada class Beli.
Isi Model JenisBarang
namespace App;
use Illuminate\Database\Eloquent\Model;
class JenisBarang extends Model
{
    protected $table = 'jenis_barang';
}


Isi Model SatuanBarang
namespace App;
use Illuminate\Database\Eloquent\Model;
class SatuanBarang extends Model
{
    protected $table = 'satuan';
}



Langkah Ketiga membuat controller Barang
php artisan make:controller BarangController
Berikut adalah isi BarangController.php
namespace App\Http\Controllers;
use Illuminate\Http\Request;
use App\Http\Requests;
use App\Barang;
class BarangController extends Controller
{
    public function index(){
      $title = 'Data Barang';
      $data = Barang::find(1);

      return view('barang.index')->with(compact('title','data'));
    }
}


Mencari data barang dengan id = 1

Langkah Keempat kita buat view nya, buat folder barang pada view dan file index.blade.php. Berikut isi dari file index.blade.php

@extends('layouts.main')
@section('content')
<table class="table table-hover">
  <tbody>
    <tr>
      <td class="col-md-2">Kode Barang</td>
      <td width="10">:</td>
      <td>{{$data->kode}}</td>
    </tr>
    <tr>
      <td class="col-md-2">Nama Barang</td>
      <td width="10">:</td>
      <td>{{$data->nama}}</td>
    </tr>
    <tr>
      <td class="col-md-2">Satuan</td>
      <td width="10">:</td>
      <td>{{$data->Satuan->satuan}}</td>
    </tr>
    <tr>
      <td class="col-md-2">Jenis</td>
      <td width="10">:</td>
      <td>{{$data->Jenis->jenis_barang}}</td>
    </tr>
    <tr>
      <td class="col-md-2">Harga Beli</td>
      <td width="10">:</td>
      <td>{{number_format($data->harga_beli)}}</td>
    </tr>
    <tr>
      <td class="col-md-2">Harga Jual</td>
      <td width="10">:</td>
      <td>{{number_format($data->harga_jual)}}</td>
    </tr>
  </tbody>
</table>
Detail Pembelian
<table class="table table-hover table-bordered">
  <thead>
    <tr>
      <th>No</th>
      <th>Tanggal</th>
      <th>Qty</th>
      <th>Harga</th>
    </tr>
  </thead>
  <tbody>
    <?php $no=1;?>
    @foreach($data->Beli as $row)
    <tr>
      <td>{{$no++}}</td>
      <td>{{$row->insert_date}}</td>
      <td>{{$row->qty}}</td>
      <td>{{number_format($row->harga_beli)}}</td>
    </tr>
    @endforeach
  </tbody>
</table>
@endsection


Langkah kelima buat routes nya, agar controller barang dapat di panggil.
Route::resource('barang','BarangController');


Terakhir kita tampilkan hasilnya :
mudah bukan.
Semoga bermanfaat.

Komentar

Posting Komentar