Skip to content

Instantly share code, notes, and snippets.

@DeaVenditama
Created May 10, 2021 04:16
Show Gist options
  • Save DeaVenditama/cb15ec6bb6a576331447e2b873c77c3e to your computer and use it in GitHub Desktop.
Save DeaVenditama/cb15ec6bb6a576331447e2b873c77c3e to your computer and use it in GitHub Desktop.
Contoh Penggunaam Transaction di CI4
<?php namespace App\Models;
class TransactionModel
{
protected $db;
public function __construct()
{
$this->db = db_connect();
}
//transaction menggunakan Raw Query
public function beli()
{
$sql_produk = "SELECT * FROM produk WHERE id=:id:";
$produk_query = $this->db->query($sql_produk,['id'=>1]);
$produk = $produk_query->getFirstRow();
$stok = $produk->stok;
$harga = $produk->harga;
$jumlah_pembelian = 2;
$total_harga = $jumlah_pembelian * $harga;
$stok = $stok-$jumlah_pembelian;
$this->db->transBegin();
try{
$sql_update_stok = "UPDATE produk SET stok=:stok:";
$this->db->query($sql_update_stok,['stok'=>$stok]);
$sql_insert_pembelian = "INSERT INTO pembelian(id_user, id_produk, jumlah, total_harga) VALUES(:id_user:,:id_produk:,:jumlah:,:total_harga:)";
$this->db->query($sql_insert_pembelian,[
'id_user' => 1,
'id_produk' => 1,
'jumlah' => $jumlah_pembelian,
'total_harga' => $total_harga,
]);
$this->db->transCommit();
return 'INSERT BERHASIL';
}
catch(\Exception $e){
$this->db->transRollback();
return $e->getMessage();
}
}
//transaction menggunakan Query Builder
public function beli2()
{
$produk_builder = $this->db->table('produk');
$produk_builder->where('id',1);
$produk = $produk_builder->get(1);
$produk = $produk->getRow();
$stok = $produk->stok;
$harga = $produk->harga;
$jumlah_pembelian = 4;
$total_harga = $jumlah_pembelian * $harga;
$stok = $stok-$jumlah_pembelian;
$this->db->transBegin();
try{
$data = [
'stok' => $stok
];
$produk_builder->update($data,['id'=>1]);
$data_pembelian = [
'id_user' => 1,
'id_produk' => 1,
'jumlah' => $jumlah_pembelian,
'total_harga' => $total_harga,
];
$pembelian_builder = $this->db->table('pembelian');
$pembelian_builder->insert($data_pembelian);
$this->db->transCommit();
return 'INSERT BERHASIL';
}
catch(\Exception $e){
$this->db->transRollback();
return $e->getMessage();
}
}
}
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment