2017 © Pedro Peláez
 

library database

Database Libraries for Kecik Framework

image

kecik/database

Database Libraries for Kecik Framework

  • Tuesday, December 6, 2016
  • by dnaextrim
  • Repository
  • 1 Watchers
  • 1 Stars
  • 194 Installations
  • PHP
  • 2 Dependents
  • 0 Suggesters
  • 0 Forks
  • 1 Open issues
  • 3 Versions
  • 0 % Grown

The README.md

Kecik Database

PayPal: , (*1)

Rekening Mandiri: 113-000-6944-858, Atas Nama: Dony Wahyu Isprananda, (*2)

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., (*3)

Cara Installasi

file composer.json, (*4)

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

Jalankan perintah, (*5)

composer install

Settingan Untuk MySQL

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

Contoh:, (*7)

$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

Nilai settingan driver untuk database ini adalah pgsql. Untuk PostgreSQL ada cara settingan yaitu:, (*8)

Tanpa DSN

Contoh:, (*9)

$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

Contoh:, (*10)

$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

Nilai settingan driver untuk database ini adalah oci8, settingan menggunakan dsn., (*11)

Contoh:, (*12)

$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

Nilai settingan driver untuk database ini adalah mongo., (*13)

Contoh:, (*14)

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

Settingan Menggunakan PDO

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

$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:, (*16)

$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:, (*17)

$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

Format dari fungsi insert., (*18)

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

Struktur datanya adalah:, (*19)

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

UPDATE

Format dari fungsi update., (*20)

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

Struktur key dan datanya adalah:, (*21)

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

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

DELETE

Format fungsi delete., (*22)

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

Struktur key nya adalah:, (*23)

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

SELECT

Format untuk fungsi find/select, (*24)

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

SELECT Field, (*25)

$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, (*26)

LIMIT, (*27)

$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, (*28)

$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, (*29)

$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, (*30)

$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, (*31)

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

IN, (*32)

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

GROUP BY, (*33)

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

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

$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, (*35)

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., (*36)

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., (*37)

**Mendapatkan field yang bersumber dari query find **, (*38)

$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, (*39)

$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, (*40)

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

Contoh penggunaan Pada Kecik Framework Versi 1.1.*

 [
        'database' => [
            'enable' => TRUE,
            'config' => [
                'driver' => 'mysqli',
                'hostname' => 'localhost',
                'username' => 'root',
                'password' => '1234567890',
                'dbname' => 'kecik'
            ]
        ]
    ]
];

$app = new Kecik\Kecik($config);
$con = $app->db->connect();

$res = $app->db->exec("SELECT * FROM data", 'data');
print_r($app->db->fetch($res));

$id = ['id'=>'2'];
$data = [
    'nama'=>'Dony Wahyu Isp',
    'email'=>'dna.extrim@gmail.com'
];

$db = $app->db;
$ret = $db->data->insert($data);
$ret = $db->data->update($id, $data);
$ret = $db->data->delete($id);

$app->get('/', function() use ($db){
    $rows = $db->data->find([
        'where' => [
            ['nama', '=', "Dony Wahyu Isp"]
        ],
        'callback' => [
            //manipulating value of email fields
            'email' => function($val, $row) {
                return substr($val, 0, 3).str_repeat('*', strpos($val, '@')-3).substr($val, strpos($val, '@'))
            }
        ]
    ]);
    
    foreach ($rows as $row) {
        echo 'Nama: '.$row->nama.'
'; /* Output email for dna.extrim@gmail.com is dna*******@gmail.com */ echo 'Email: '.$row->email.'
'; } }); $app->run(); ?>

Contoh Tanpa Menggunakan Autoload Library

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');

$db = new Kecik\Database($app);
$con = $db->connect();

$res = $db->exec("SELECT * FROM data", 'data');
print_r($db->fetch($res));

$id = ['id'=>'2'];
$data = [
    'nama'=>'Dony Wahyu Isp',
    'email'=>'dna.extrim@gmail.com'
];

$ret = $db->data->insert($data);
$ret = $db->data->update($id, $data);
$ret = $db->data->delete($id);

$app->get('/', function() use ($db){
    $rows = $db->data->find([
        'where' => [
            ['nama', '=', "Dony Wahyu Isp"]
        ],
        'callback' => [
            //manipulating value of email fields
            'email' => function($val, $row) {
                return substr($val, 0, 3).str_repeat('*', strpos($val, '@')-3).substr($val, strpos($val, '@'))
            }
        ]
    ]);
    
    foreach ($rows as $row) {
        echo 'Nama: '.$row->nama.'
'; /* Output email for dna.extrim@gmail.com is dna*******@gmail.com */ echo 'Email: '.$row->email.'
'; } }); $app->run(); ?>

The Versions

06/12 2016

dev-develop

dev-develop

Database Libraries for Kecik Framework

  Sources   Download

MIT

The Requires

 

by Dony Wahyu Isp

database framework kecik

10/12 2015

dev-master

9999999-dev

Database Libraries for Kecik Framework

  Sources   Download

MIT

The Requires

 

by Dony Wahyu Isp

database framework kecik

10/12 2015

1.0.3

1.0.3.0

Database Libraries for Kecik Framework

  Sources   Download

MIT

The Requires

 

by Dony Wahyu Isp

database framework kecik