PHPackages                             kecik/database - PHPackages - PHPackages  [Skip to content](#main-content)[PHPackages](/)[Directory](/)[Categories](/categories)[Trending](/trending)[Leaderboard](/leaderboard)[Changelog](/changelog)[Analyze](/analyze)[Collections](/collections)[Log in](/login)[Sign up](/register)

1. [Directory](/)
2. /
3. [Framework](/categories/framework)
4. /
5. kecik/database

ActiveLibrary[Framework](/categories/framework)

kecik/database
==============

Database Libraries for Kecik Framework

1.0.3(10y ago)32371[1 issues](https://github.com/kecik-framework/database/issues)2MITPHPPHP &gt;=5.4.0

Since Dec 10Pushed 9y ago1 watchersCompare

[ Source](https://github.com/kecik-framework/database)[ Packagist](https://packagist.org/packages/kecik/database)[ RSS](/packages/kecik-database/feed)WikiDiscussions master Synced 1mo ago

READMEChangelog (1)Dependencies (1)Versions (3)Used By (2)

**Kecik Database**
==================

[](#kecik-database)

> **PayPal**: [![](https://camo.githubusercontent.com/648ad6f048733f167bf65e11a4fd759eef14da88db61ad078bbd5ddea5d57133/68747470733a2f2f7777772e70617970616c6f626a656374732e636f6d2f656e5f55532f692f62746e2f62746e5f646f6e6174655f4c472e676966)](https://www.paypal.com/cgi-bin/webscr?cmd=_donations&business=dony_cavalera_md%40yahoo%2ecom&lc=US&item_name=Dony%20Wahyu%20Isp&no_note=0&currency_code=USD&bn=PP%2dDonationsBF%3abtn_donateCC_LG%2egif%3aNonHostedGuest)
>
> **Rekening Mandiri**: 113-000-6944-858, **Atas Nama**: Dony Wahyu Isprananda

Merupakan pustaka/library yang dibuat khusus Framework Kecik, pustaka/library ini dibuat untuk mempermudah anda dalam menggunakan database kedalam project yang anda buat. Pustaka/Library ini, saat ini support untuk database mysql, oracle, postgresql, mongodb dan PDO.

**Cara Installasi**
-------------------

[](#cara-installasi)

file composer.json

```
{
	"require": {
		"kecik/kecik": "1.0.*@dev",
		"kecik/database": "1.0.*@dev"
	}
}
```

Jalankan perintah

```
composer install
```

**Settingan Untuk MySQL**
-------------------------

[](#settingan-untuk-mysql)

Nilai settingan darive untuk database ini adalah `mysqli` jadi pustaka/library ini tidak menggunakan dari mysql, tapi menggunakan driver mysqli.

**Contoh:**

```
$app->config->set('database.driver', 'mysqli');
$app->config->set('database.hostname', 'localhost');
$app->config->set('database.username', 'root');
$app->config->set('database.password', '1234567890');
$app->config->set('database.dbname', 'kecik');
```

**Settingan Untuk PostgreSQL**
------------------------------

[](#settingan-untuk-postgresql)

Nilai settingan driver untuk database ini adalah `pgsql`. Untuk PostgreSQL ada cara settingan yaitu:

### Tanpa DSN

[](#tanpa-dsn)

**Contoh:**

```
$app->config->set('database.driver', 'pgsql');
$app->config->set('database.hostname', 'localhost');
$app->config->set('database.username', 'postgres');
$app->config->set('database.password', '1234567890');
```

### Dengan DSN

[](#dengan-dsn)

**Contoh:**

```
$app->config->set('database.driver', 'pgsql');
$app->config->set('database.dsn', "host=localhost port=5432 dbname=kecik user=postgres password=1234567890 options='--client_encoding=UTF8'");
```

**Settingan Untuk Oracle**
--------------------------

[](#settingan-untuk-oracle)

Nilai settingan driver untuk database ini adalah `oci8`, settingan menggunakan dsn.

**Contoh:**

```
$app->config->set('database.driver', 'oci8');
$app->config->set('database.dsn', 'localhost/xe');
$app->config->set('database.username', 'kecik');
$app->config->set('database.password', '1234567890');
```

**Settingan Untuk MongoDB**
---------------------------

[](#settingan-untuk-mongodb)

Nilai settingan driver untuk database ini adalah `mongo`.

**Contoh:**

```
$app->config->set('database.driver', 'mongo');
$app->config->set('database.dsn', 'mongodb://localhost');
$app->config->set('database.dbname', 'kecik');
```

**Settingan Menggunakan PDO**
-----------------------------

[](#settingan-menggunakan-pdo)

Pustaka/library ini juga mendukung penggunaan driver PDO. Semua settingan menggunakan driver PDO semuanya menggunakan dsn. **Contoh PDO MySQL:**

```
$app->config->set('database.driver', 'pdo');
$app->config->set('database.dsn', 'mysql:host=localhost;dbname=kecik;');
$app->config->set('database.username', 'root');
$app->config->set('database.password', '1234567890');
```

**Contoh PDO PostgreSQL:**

```
$app->config->set('database.driver', 'pdo');
$app->config->set('database.dsn', 'pgsql:host=localhost;dbname=kecik;');
$app->config->set('database.username', 'postgres');
$app->config->set('database.password', '1234567890');
```

**Contoh PDO Oracle:**

```
$app->config->set('database.driver', 'pdo');
$app->config->set('database.dsn', 'oci:host=localhost;dbname=xe;');
$app->config->set('database.username', 'kecik');
$app->config->set('database.password', '1234567890');
```

### **INSERT**

[](#insert)

Format dari fungsi insert.

```
$app->db->$table->insert($data);
```

Struktur datanya adalah:

```
$data = [
	'field_nama' => 'Dony Wahyu Isp',
	'field_email' => 'dna.extrim@gmail.com'
];
```

### **UPDATE**

[](#update)

Format dari fungsi update.

```
$app->db->$table->update($key, $data);
```

Struktur key dan datanya adalah:

```
//** $key
$key = ['id' => 2];

//** $data
$data = [
	'field_nama' => 'dnaextrim',
	'field_email' => 'dna.extrim@gmail.com'
];
```

### **DELETE**

[](#delete)

Format fungsi delete.

```
$app->db->$table->delete($key);
```

Struktur key nya adalah:

```
$key = ['id' => 3];
```

### **SELECT**

[](#select)

Format untuk fungsi find/select

```
$rows = $app->db->$table->find($filter, $limit, $order_by);
```

**SELECT Field**

```
$rows = $app->db->$table->find([
	'select' => [
		['nama, email'], //** Cara Pertama
		['nama', 'email'], //** Cara Kedua
		['max'=>'nilai'], //** Cara Ketiga
		['max'=>'nilai', 'as'=>'nilai_maksimum'] //** Cara Keempat
	]
]);
```

> **Catatan:** Cara keempat hanya berlaku untuk database dengan SQL bukan untuk database NoSQL

**LIMIT**

```
$rows = $app->db->$table->find([],[10]); //** Cara Pertama limit 10 baris
$app->db->$table->find([], [5, 10]); //** Cara Kedua limit dari posisi index ke 5 sebanyak 10 baris
```

**ORDER BY**

```
$rows = $app->db->$table->find([],[],[
	'asc' => ['nama', 'email'], //** Pengurutan menaik/Ascending untuk field nama dan email
	'desc' => ['nama', 'email'] //** Pengurutan menurun/Descending untuk field nama dan email
]);
```

**WHERE**Where tanpa pengelompokan

```
$rows = $app->db->$table->find([
	'where'=> [
		["nama = 'Dony Wahyu Isp'"], //** Cara Pertama
		["nama", "='Dony Wahyu Isp'"], //** Cara Kedua
		["nama", "=", "Dony Wahyu Isp"], //** Cara Ketiga
		["nama = '?' AND email = '?'" => [$nama, $email]], //** Cara Keempat
		["nama", "='?' AND email = '?'" => [$nama, $email]], //** Cara Kelima
	]
]);
```

Where dengan pengelompokan

```
$rows = $app->db->$table->find([
	'where' => [
		'and' => [
			'and' => [
				["nama", "=", "Dony Wahyu Isp"],
				["email", "=", "dna.extrim@gmail.com"]
			],
			'or' => [
				["nama", "=", "Dony Wahyu Isp"],
				["email", "=", "dna.extrim@gmail.com"]
			]
		]
	]
]);
```

**BETWEEN**

```
$rows = $app->db->$table->find([
	'where' => [
		["nilai", "between", [50, 100]],
		["nilai", "not between", [50, 100]], //** Dengan NOT
	]
]);
```

**IN**

```
$rows = $app->db->$table->find([
	'where' => [
		["nilai", "in", [50, 60, 70, 80]],
		["nilai", "not in", [50, 60, 70, 80]], //** Dengan NOT
	]
]);
```

**GROUP BY**

```
$rows = $app->db->$table->find([
	'group by'=> [
		['username']
	]
]);
```

**JOIN (Natural/Left/Right)**

```
$rows = $app->db->$table->find([
	'join' => [
		['natural', 'table_profil'], //** Natural JOIN
		['left', 'table_profil', 'field_nama'], //** Left/Righ Join Cara Pertama
		['left', 'table_profil', ['field_nama_profile', 'field_nama_user']] //** Left/Right Join Cara Kedua
	]
]);
```

> **Catatan**: Untuk sementara ini join belum support untuk penggunaan database NoSQL seperti MongoDB

**CALLBACK**Untuk melakukan manipulasi hasil row baik diterapkan pada seluruh field ataupun pada field tertentu saja. Parameter yang digunakan untuk callback adalah `$value` dan `$row`, `$value` merupakan nilai yang diberikan oleh field pada setiap row/baris, sedangkan `$row` merupakan data pada setiap row/baris nya. ####Penerapan pada seluruh Field

```
$rows = $app->db->$table->find([
	'callback'=> function($value, $row) {
		return 'Rp. '.$value;
	}
]);
```

\####Penerapan pada Field tertentu

```
$rows = $app->db->$table->find([
	'callback'=> [
		'harga' => function($value, $row) {
			return 'Rp. '.$value;
		},
		'password' => function($value, $row) {
			return '*****';
		},
		'id' => function($value, $row) {
			$row->action = "{\"id\":\"$value\"}";
			return $value;
		},
	]
]);
```

\###**Fields**Untuk Mendapatkan nama field berserta dengan nama, tipe, ukuran dan nama table.

\*\*Mendapatkan field yang bersumber dari query find \*\*

```
$rows = $app->db->$table->find();
$fields = $app->db->$table->fields();
foreach($fields as $field) {
	echo 'Name: '.$field->name;
	echo 'Type: '.$field->type;
	echo 'Size: '.$field->size;
	echo 'Table: '.$field->table;
}
```

**Mendapatkan field dari table**

```
$fields = $app->db->$table->fields();
foreach($fields as $field) {
	echo 'Name: '.$field->name;
	echo 'Type: '.$field->type;
	echo 'Size: '.$field->size;
	echo 'Table: '.$field->table;
}
```

\###**Num Rows**Untuk mendapatkan jumlah row/baris dari hasil find

```
$rows = $app->db->$table->find();
$count = $app->db->$table->num_rows();
```

Contoh penggunaan Pada Kecik Framework Versi 1.1.\*
---------------------------------------------------

[](#contoh-penggunaan-pada-kecik-framework-versi-11)

```
