Created
May 10, 2021 04:16
-
-
Save DeaVenditama/cb15ec6bb6a576331447e2b873c77c3e to your computer and use it in GitHub Desktop.
Contoh Penggunaam Transaction di CI4
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
<?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