- Seme Framework
- versi 4.0.3 (ID)
- Persyaratan
- Download & Install
- Pengaturan
- Tutorial
- Perutean URI
- Konstanta
- Variabel Global
- Model
- View
- Controller
- Library
- CLI (command line interface)
- Core
- ABAC
Metode Join
Metode join
digunakan untuk menggabungkan hasil query dari dua tabel atau lebih dengan syarat hanya memiliki 1 kunci yang akan di joinkan.
Metode ini akan mengeksekusi perintah SQL JOIN
dan juga bagian dari Query Builder
.
Bentuk Umum
Berikut ini adalah bentuk umum metode join
dari properti $db
di kelas SENE_Model .
$this->db->join(
string $table2,
string $table2_alias,
string $table2_column_to_joined,
string $table1_alias,
string $table1_column_to_joined
[, string $join_method = ""]
): $this->db
Parameter
Metode join
terdiri dari 5 parameter wajib dan 1 parameter opsional.
$table2
Dapat berisi string
nama tabel yang akan dijoinkan.
$table2_alias
Dapat berisi string
berisi nama alias tabel dari $table2
.
$table2_column_to_joined
Dapat berisi string
nama kolom patokan dari $table2
untuk dijoinkan.
$table1_alias
Dapat berisi string
nama alias dari tabel patokan.
$table1_column_to_joined
Dapat berisi string
nama kolom patokan dari tabel $table1_alias
.
$join_method
Cara yang digunakan untuk menjoinkan tabel, nilai defaultnya adalah string kosong ""
.
Berikut ini adalah beberapa nilai yang cocok untuk isi dari parameter join_method
:
left
untuk left joinright
untuk right joininner
untuk inner joinouter
untuk outer join
Contoh penggunaan
Berikut ini adalah contoh penggunaan metode join
pada file d_order_model.php
.
<?php
class D_Order_Model extends SENE_Model{
public $table = 'd_order';
public $table_alias = 'dor';
public $table2 = 'd_order_detail';
public $table2_alias = 'dod';
public $table3 = 'c_produk';
public $table3_alias = 'cp';
public function __construct(){
parent::__construct();
$this->db->from($this->table,$this->table_alias);
}
public function getByOrderId($d_order_id){
$this->db->from($this->table,$this->table_alias);
$this->db->join($this->table2, $this->table2_alias, 'id', $this->table_alias, 'd_order_id', 'left');
$this->db->where_as("$this->table_alias.d_order_id", $this->db->esc($d_order_id));
return $this->db->get();
}
public function getDetailJasaForDrDashboard(){
$this->db->from($this->table, $this->table_alias);
$this->db->join($this->table2, $this->table2_alias, 'id', $this->table_alias, 'd_order_id', '');
$this->db->join($this->table3, $this->table3_alias, 'id', $this->table_alias, 'c_produk_id', 'left');
$this->db->where_as("$this->table2_alias.utype",$this->db->esc('order_selesai'));
$this->db->where_as("$this->table3_alias.jenis_paket", 'IS NULL');
$this->db->where_as("$this->table_alias.sdate", 'IS NOT NULL');
return $this->db->get('',0);
}
}
Hasil Perintah SQL
Berikut ini adalah perintah SQL yang dihasilkan oleh metode yang ada pada contoh kelas D_Order_Model
.
-- result from executing D_Order_Model::getByOrderId(59) --
SELECT *
FROM `d_order` dor
LEFT JOIN d_order_detail dod
ON dor.id = dod.d_order_id
WHERE dod.`id` = 59;
-- result from executing D_Order_Model::getDetailJasaForDrDashboard() --
SELECT *
FROM `d_order` dor
JOIN d_order_detail dod
ON dor.id = dod.d_order_id
LEFT JOIN c_produk cp
ON cp.id = dod.c_produk_id
WHERE
dod.`utype` = "order_selesai"
AND cp.utype IS NULL
AND dor.sdate IS NOT NULL;