Metode Where AS

Metode where_as digunakan untuk melakukan penyaringan data dengan kondisi tertentu tapi tidak otomatis di Escape. Metode ini akan mengeksekusi perintah SQL WHERE. Metode ini juga bagian dari Query Builder.

Bentuk Umum

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

$this->db->where_as(string $column_name, mixed $filter_value [, string $operator = 'AND' [, string $relation_operator = '=' [, int $open_bracket = 0 [, int $close_bracket = 0 ]]]]): $this->db

Parameter

Metode where_as terdiri dari 2 parameter wajib yaitu $column_name dan $filter_value.

$column_name

Dapat berisi nama kolom yang akan di filter. Nilai parameter ini tidak otomatis di escape. Berikut ini adalah contoh isi nilai dari parameter ini:

  • DATE(column_name)
  • COALESCE(column_name, 0)
  • dan seterusnya.

$filter_value

Nilai filter terhadap kolom terpilih. Bisa di isi juga dengan kombinasi nilai juga function bawaan dari database. Nilai parameter ini tidak otomatis di escape. Berikut ini adalah contoh isi nilai dari parameter ini:

  • NOW()
  • CURRENT_DATE()
  • DATE('2021-08-09')
  • IS NULL
  • IS NOT NULL
  • dan seterusnya.

$operator

Nilai operator yang dilakukan terhadap kondisi WHERE selanjutnya, berikut ini nilai yang cocok untuk nilai dari parameter ini.

  • AND
  • OR

$operator_relational

Nilai operator relasional yang dilakukan terhadap kondisi filter dengan nama kolom.

  • =
  • != atau <>
  • >
  • <
  • >=
  • <=
  • like
  • like%
  • %like
  • %like% atau like%%
  • notlike
  • notlike%
  • %notlike
  • %notlike% atau notlike%%

$open_bracket

Menambahkan kurung buka pada awal perintah SQL sebelum isi perintah kondisi WHERE selanjutnya.

$close_bracket

Menambahkan kurung tutup pada akhir perintah SQL sebelum isi perintah kondisi WHERE selanjutnya.

Contoh penggunaan

Berikut ini adalah contoh penggunaan metode where_as 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', '');
    $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', '');
    $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 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
  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;