- 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
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{
var $tbl = 'd_order';
var $tbl_as = 'dor';
var $tbl2 = 'd_order_detail';
var $tbl2_as = 'dod';
var $tbl3 = 'c_produk';
var $tbl3_as = 'cp';
public function __construct(){
parent::__construct();
$this->db->from($this->tbl,$this->tbl_as);
}
public function getByOrderId($d_order_id){
$this->db->from($this->tbl,$this->tbl_as);
$this->db->join($this->tbl2, $this->tbl2_as, 'id', $this->tbl_as, 'd_order_id', 'left');
$this->db->where_as("$this->tbl_as.d_order_id", $this->db->esc($d_order_id));
return $this->db->get();
}
public function getDetailJasaForDrDashboard(){
$this->db->from($this->tbl, $this->tbl_as);
$this->db->join($this->tbl2, $this->tbl2_as, 'id', $this->tbl_as, 'd_order_id', '');
$this->db->join($this->tbl3, $this->tbl3_as, 'id', $this->tbl_as, 'c_produk_id', 'left');
$this->db->where_as("$this->tbl2_as.utype",$this->db->esc('order_selesai'));
$this->db->where_as("$this->tbl3_as.jenis_paket", 'IS NULL');
$this->db->where_as("$this->tbl_as.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;