Panada Framework 1.0.0 Documentation

Query Builder

Query Builder membantu Anda untuk membuat query database secara dinamis dengan lebih cepat. Sebagian besar penggunaan method diakses dengan cara Method Chaining.

Untuk menggunakan feature ini pastikan konfigurasi koneksi ke database sudah benar. Untuk detail panduan koneksi database, silahkan klik di halaman configuration.

Select

Untuk mendapatkan data dari semua kolom tabel:

$data = $this->db->select()->from('users')->getAll();

Method ini menghasilkan output data SQL:

SELECT * FROM users

Untuk mendapatkan beberapa kolom dari tabel:

$data = $this->db->select('id', 'name')->from('users')->getAll();
// atau bisa juga
$data = $this->db->select( array('id', 'name') )->from('users')->getAll();

Method ini menghasilkan output data SQL:

SELECT id, name FROM users

Fungsi SQL juga bisa diisikan pada argument select():

$data = $this->db->select('COUNT(*)')->from('users')->getVar();

Method ini menghasilkan output data SQL:

SELECT COUNT(*) FROM users

Distinct

Berikut adalah contoh penggunaan statetment distinct:

$data = $this->db->select('name')->distinct()->from('users')->limit(10)->getAll();

Method ini menghasilkan output data SQL:

SELECT DISTINCT name FROM users LIMIT 10

From

Method from() dari contoh-contoh yang ada merepresentasikan dari nama tabel. $data = $this->db->select()->from('users')->getAll();

Method ini menghasilkan output data SQL:

SELECT * FROM users

Nilai argument bisa berupa string ataupun array.

$data = $this->db->select()->from('users', 'posts')->where('users.id', '=', 'posts.post_author')->getAll();
// atau
$data = $this->db->select()->from( array('users', 'posts') )->where('users.id', '=', 'posts.post_author')->getAll();

Method ini menghasilkan output data SQL:

SELECT * FROM users, posts WHERE users.id = posts.post_author

Join

Untuk melakukan query dari beberapa tabel, method join() bisa digunakan. Penggunaan method ini diikuti penggunaan method on(). $data = $this->db->select('users.name', 'posts.post')->from('users')->join('posts')->on('users.id', '=', 'posts.post_author');

Method ini menghasilkan output data SQL:

SELECT users.name, posts.post FROM users JOIN posts ON (users.id = posts.post_author)

Anda juga bisa menambahkan tipe join seperti LEFT, RIGHT dan INNER pada argument ke dua di dalam method join(). $data = $this->db->select('users.name', 'posts.post')->from('users')->join('posts', 'RIGHT')->on('users.id', '=', 'posts.post_author');

Method ini menghasilkan output data SQL:

SELECT users.name, posts.post FROM users RIGHT JOIN posts ON (users.id = posts.post_author)

Where

Untuk membatasi hasil pencarian Anda bisa menggunakan method where(). object where( string $column, string $operator, string $value, mix $seperator = false);

Parameter

Variable Tipe Data Keterangan
$column string Nama kolom yang menjadi kriteria penyeleksian.
$operator string Operator SQL: IN, BETWEEN, >, =<, !=
$value string | array Nilai yang akan dibandingkan dengan kolom.
$seperator mix Operator pemisah antara kondisi sebelum dan kondisi sesudah. Contoh: OR, AND

Berikut contoh penggunaan method ini:

$data = $this->db->select()->from('users')->where('id', '=', 1)->getOne();

Method ini menghasilkan output data SQL:

SELECT * FROM users WHERE id = 1

Jika penyeleksian data lebih dari satu kondisi:

$data = $this->db->select()->from('users')->where('id', '=', 1, 'OR')->where('email', '=', [email protected] ')->getOne();

Penggunaan operator IN:

$data = $this->db->select()->from('users')->where('id', 'IN', array(1,4,7))->getAll();

Method ini menghasilkan output data SQL:

SELECT * FROM users WHERE id IN 1,4,7

Penggunaan operator BETWEEN:

$data = $this->db->select()->from('users')->where('id', 'BETWEEN', array(1,7))->getAll();

Method ini menghasilkan output data SQL:

SELECT * FROM users WHERE id BETWEEN 1 AND 7

Group By

Penggunaan method groupBy():

$data = $this->db->select('id', 'name')->from('users')->groupBy('name', 'id')->limit(10)->getAll();

Method ini menghasilkan output data SQL:

SELECT id, name FROM users GROUP BY name, id LIMIT 10

Having

Berikut adalah contoh cara menggunakan method having():

$data = $this->db->select('id', 'post_title')->from('posts')->groupBy('post_author','id', 'post_title')->having('COUNT(id)', '>=', 2)->getAll();

Method ini menghasilkan output data SQL:

SELECT * FROM posts GROUP BY post_author HAVING COUNT(id) >= 2

Order By

Untuk mengurutkan hasil pencarian data, Anda bisa menggunakan method orderBy()

$data = $this->db->select()->from('users')->orderBy('id')->getAll();

Method ini menghasilkan output data SQL:

SELECT * FROM users ORDER BY id

Cara yang lain:

$data = $this->db->select()->from('users')->orderBy('id', 'DESC')->getAll();

Method ini menghasilkan output data SQL:

SELECT * FROM users ORDER BY id DESC

Penggunaan dengan method where():

$data = $this->db->select()->from('users')->where('id', '>', 1)->orderBy('id', 'DESC')->getAll();

Method ini menghasilkan output data SQL:

SELECT * FROM users WHERE id > 1 ORDER BY id DESC

Limit

Argument pertama digunakan untuk menentukan jumlah limit. Berikut adalah cara penggunaan method limit():

$data = $this->db->select()->from('users')->where('id', '>', 1)->orderBy('id', 'DESC')->limit(3)->getAll();

Method ini menghasilkan output data SQL:

SELECT * FROM users WHERE id > 1 ORDER BY id DESC LIMIT 3

Sedangkan argument ke dua digunakan untuk menentukan nilai offset:

$data = $this->db->select()->from('users')->where('id', '>', 1)->orderBy('id', 'DESC')->limit(6,2)->getAll();

Method ini menghasilkan output data SQL:

SELECT * FROM users WHERE id > 1 ORDER BY id DESC LIMIT 6 OFFSET 2

Command

Jika Anda ingin melihat output SQL dari method chain yang sudah dibuat, silahkan gunakan method _command().

$sql = $this->db->select()->from('users')->groupBy('name')->limit(10)->_command();
die($sql);

Insert Id

Untuk mendapatkan id dari proses insert terakhir, bisa menggunakan properties $this->db->insert_id.

$this->db->query("INSERT INTO table_name (field_1, field_2) VALUES ('budi', [email protected] ')");

echo $this->db->insert_id;

Get One

Untuk mendapatkan single record menggunakan method:

getOne( table_name, where_argument, fields );

Keterangan Method ini:

table_name adalah string nama tabel yang akan diquery.

where_argument adalah array dari argument "WHERE". Contoh: WHERE id = '1' AND status = '0' maka array-nya adalah array('id' => '1', 'status' => '0') Nilai default parameter ini adalah null atau tidak ada argument "WHERE"

fields adalah array dari filed yang akan didapatkan. Nilai default argument ini adalah all (*). Untuk query seperti:

SELECT id, name, status FROM ....

Nilai array-nya adalah:

array('id', 'name', 'status')

Maka untuk query seperti ini:

"SELECT id, name, status FROM table_name WHERE id = '1' AND status = '0'"

Penggunaan method getOne-nya adalah:

$data = $this->db->getOne('table_name', array('id' => 1, 'status' => '0'), array('id', 'name', 'status') );
echo $data->id;
echo $data->name;
echo $data->status;

Get All

Untuk query seperti:

"SELECT id, name, email FROM table_name WHERE status = '1'"

Maka penggunaan Method getAll-nya adalah:

$data = $this->db->getAll('table_name', array('id' => 1, 'email' => [email protected] '), array('field_1', 'field_2'));
foreach ($data as $data) {
      echo $data->field_1;
      echo $data->field_2;
}

Insert

Untuk menambahkan data baru dengan cara:

$query = $this->db->insert('table_name', array('name' => 'jhon', 'email' => [email protected] '));

Method ini adalah abstraksi dari SQL:

INSERT INTO table_name (name, email) VALUES ('jhon', [email protected] ')

Update

Untuk melakukan update record dengan cara:

$query = $this->db->update('table_name', array('name' => 'jhon gmail', 'email' => [email protected] '), array('id' => 6));

Method ini adalah abstraksi dari SQL:

UPDATE table_name SET name = 'budi', email = [email protected] ' WHERE id = 6

Kriteria juga bisa di-passing ke dalam method $this->db->where().

$this->db->where('id', '>', 1, 'AND');
$this->db->where('id', '<', 10);
$this->db->update('table_name', array('status' => 'visited') );

Hasil abstraksi SQL:

UPDATE table_name SET status = 'visited' WHERE id > 1 AND id < 10

Delete

Untuk menghapus record dengan cara:

$query = $this->db->delete('table_name', array('id' => '6'));

Method ini adalah abstraksi dari SQL:

DELETE FROM table_name WHERE id = 6

Atau menggunakan method $this->db->where().

$this->db->where('id', '>', 1, 'AND');
$this->db->where('id', '<', 10);
$this->db->delete('table_name');

Hasil abstraksi SQL:

DELETE FROM table_name WHERE id > 1 AND id < 10

Diskusi