Cara Membuat Fungsi Multiple Insert di YII

Cara Membuat Fungsi Multiple Insert di YII - Multiple Insert merupakan salahsatu cara / metode untuk menyimpan data banyak dalam hanya dalam 1 kali proses, dimana kita bisa input data-data hanya 1 kali klik ini ditujukan untuk membuat fungsionalitas agar efektif dan efisien.
Salahsatu cara yang bisa digunakan untuk membuat fungsi multipe insert ini adalah sebagai berikut, salahsatu contoh study kasus disini akan menyimpan 2 data aktivitas saya dalam waktu yang bersamaan ke dalam 1 tabel bernama activity:

Pertama
Membuat Fungsi tambahan di dalam folder component yang ada di YII, dan beri nama multiplemugi.php
<?php
class Multiplemugi
{
    public static function insert($table, $array_columns)
    {
        $connection = Yii::app()->db;
        $sql = '';
        $params = array();
        $i = 0;
        foreach ($array_columns as $columns) {
            $names = array();
            $placeholders = array();
            foreach ($columns as $name => $value) {
                if (!$i) {
                    $names[] = $connection->quoteColumnName($name);
                }
                if ($value instanceof CDbExpression) {
                    $placeholders[] = $value->expression;
                    foreach ($value->params as $n => $v)
                        $params[$n] = $v;
                } else {
                    $placeholders[] = ':' . $name . $i;
                    $params[':' . $name . $i] = $value;
                }
            }
            if (!$i) {
                $sql = 'INSERT INTO ' . $connection->quoteTableName($table)
                . ' (' . implode(', ', $names) . ') VALUES ('
                . implode(', ', $placeholders) . ')';
            } else {
                $sql .= ',(' . implode(', ', $placeholders) . ')';
            }
            $i++;
        }
        $command = Yii::app()->db->createCommand($sql);
        return $command->execute($params);
    }
}
Kedua
Membuat Fungsi di Controller / Model, sebagai contoh disini saya akan membuat function di model untuk menyimpan banyak data hanya dengan 1 kali panggil:
public function actionTesting(){
$rows = array(
    array(
        'created_date' => date('Y-m-d h:i:s'),
        'type' => '1',
        'description' => 'Sip',
        'activity_id' => '1',
        'user_id' => '1',
        'point' => '1',
        'status' => '1',
        ),
    array(
        'created_date' => date('Y-m-d h:i:s'),
        'type' => '2',
        'description' => 'Ok',
        'activity_id' => '2',
        'user_id' => '2',
        'point' => '2',
        'status' => '2',
        ),
    );

Multiplemugi::insert(Activities::model()->tableName(), $rows);
}

Penjelasan: 
Terdapat fungsi yang bernama actionTesting() didalam fungsi ini terdapat aksi untuk menyimpan data berupa array yang dimana fungsi Multiplemugi::insert() memanggil class Multiplemugi dengan method insert() yang berada di folder component tadi.
Kemudian Activities::model()->tableName() merupakan fungsi untuk memanggil nama tabel yang akan disimpan yang cukup memanggil nama modelnya saja. Pada model activity terdapat struktur tabel seperti berikut:

Struktur Tabel Activities

2 Data Masuk ke Database Bersamaan dengan Berbeda ID
Mau Tanya ? Silahkan Klik Disini

0 comments