Metode Join Composite

Metode join_composite digunakan untuk menggabungkan hasil query dari dua tabel atau lebih dengan syarat join lebih dari 1 kunci. Metode ini akan mengeksekusi perintah SQL JOIN dan juga bagian dari Query Builder. Metode ini juga cocok untuk digunakan dalam proses join dengan kondisi PRIMARY KEY lebih dari satu.

Bentuk Umum

Berikut ini adalah bentuk umum metode join_composite dari properti $db di kelas SENE_Model .

$this->db->join_composite(
  string $table2_name,
  string $table2_alias,
  array $compositeObjects
  [, string $join_method = ""]
): $this->db

Parameter

Metode ini membutuhkan 4 parameter wajib dan 1 parameter opsional.

$table2_name

Nama tabel yang akan dijoinkan.

$table2_alias

Nama alias tabel yang akan dijoinkan.

$compositeObjects

Array yang berisi objek komposit, isi nilai ini dibuat oleh metode composite_create .

$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 join
  • right untuk right join
  • inner untuk inner join
  • outer untuk outer join

Contoh Penggunaan

Berikut ini adalah contoh penggunaan metode join_composite pada file d_sales_model.php.

class D_Sales_Model extends SENE_Model{
  var $tbl = 'd_sales';
  var $tbl_as = 'dsl';
  var $tbl2 = 'b_seller';
  var $tbl2_as = 'bs';

  public function __construct(){
    parent::__construct();
    $this->db->from($this->tbl,$this->tbl_as);
  }
  private function __joinTbl2(){
    $composites = array();
    $composites[] = $this->db->composite_create("$this->tbl_as.nation_code","=","$this->tbl_as.nation_code");
    $composites[] = $this->db->composite_create("$this->tbl_as.b_seller_id","=","$this->tbl_as.id");
    return $composites;
  }
  public function getByOrderId($id){
    $this->db->join_composite($this->tbl2,$this->tbl2_as,$this->__joinTbl2(),"inner");
    $this->db->where_as("$this->tbl_as.id",$this->db->esc($id));
    return $this->db->get_first();
  }
}

Hasil Perintah SQL

Berikut ini adalah perintah SQL yang dihasilkan oleh metode yang ada pada contoh kelas D_Sales_Model.

-- result from executing D_Sales_Model::getByOrderId(37) --
SELECT *
FROM `d_sales` dsl
INNER JOIN b_seller bs
  ON (
    dsl.nation_code = bs.nation_code
    AND dsl.b_seller_id = bs.id
  )
WHERE
  dsl.id = "37"
LIMIT 0, 1;

Info

Metode ini ada dari mulai Seme Framework versi >= 3.2.1