Join our newsletter!

Enter your email to receive our latest newsletter.

Don't worry, we don't spam

relasi# laravel# tutorial# coding# eloquent# model

3 tahun yang lalu

Implementasi relasi pada Model laravel dengan condition

Kali ini kita akan membahas implementasi model eloquent pada laravel. objective kita saat ini adalah untuk mendapatkan data dari suatu model yang ber-relasi kemudian hasil relasi tersebut kita tambahkan condition. Misal kita ingin mendapatkan data order / pembelian yang cara pembayarannya dengan "transfer manual". 

Buatlah 2 model, dengan nama PaymentMethod.php dan Order.php. Kita akan menggunakan model PaymentMethod sebagai object mapper master data metode pembayaran (table ms_payment_method). dan model Order sebagai object mapper data transaksi pembelian / order.

- PaymentMethod.php

<?php

namespace App\Models;

use Illuminate\Database\Eloquent\Model;
use Spatie\Permission\Traits\HasRoles;
/**
* Class PaymentMethod
*/
class PaymentMethod extends Model
{
	use HasRoles;
	protected $table = 'ms_payment_method';
	protected $guarded = ['id'];
	public $timestamps = false; 
}

Value pada table ms_payment_method seperti contoh dibawah ini :
+----+-----------------+-----------------------+--------+---------------------+
| id | name            | note                  | status | created_at          |
+----+-----------------+-----------------------+--------+---------------------+
| 1  | COD             | Cash on Deliver       | 1      | 2020-11-20 10:30:07 |
+----+-----------------+-----------------------+--------+---------------------+
| 2  | Transfer Manual | Transfer ke rekeneing | 1      | 2020-11-20 10:31:08 |
+----+-----------------+-----------------------+--------+---------------------+
| 3  | Debit           | Kartu Debit           | 0      | 2020-11-20 10:32:09 |
+----+-----------------+-----------------------+--------+---------------------+

Order.php


<?php

namespace App\Models;

use Illuminate\Database\Eloquent\Model;
use Spatie\Permission\Traits\HasRoles;
/**
* Class Order
*/
class Order extends Model
{
	use HasRoles;
	protected $table = 'tr_orders';
	protected $guarded = ['id'];
	public $timestamps = false; 
	

	public function metodebayar(){
		return $this->belongsTo('App\Models\PaymentMethod', 'id_method','id');
	}
	 
}


fungsi metodebayar dimaksud untuk medapatkan relasi data pada model PaymentMethod bahwa dalam table column id_method pada table tr_orders terelasikan dengan id pada table ms_payment_method. 
Setelah itu tambahkan controller dengan nama OrderController.php


<?php

namespace App\Http\Controllers\;

use App\Models\Order;
use Exception;
use Illuminate\Support\Facades\Session;

class OrderController extends Controller
{

	public function getOrderTransfer()
	{
		$data = Order::
		Orderby('id','desc')
			->whereHas('metodebayar', function($q) {
				$q->where('id', '2');
			})->get();
		return response($data, 500);
	}
		
}


Terakhir tambahkan pada file web.php anda.

Route::get('getordertr', 'App\Http\Controllers\OrderController@getOrderTransfer')->name('getordertr');

Jalankan php artisan serve, kemudian buka url seperti contoh diatas.
Wasallam