Web Development — Membuat Toko Online menggunakan Laravel — Part 5
Membuat Toko Online menggunakan Laravel 5.8 — Part 5
Assalamualaikum semua, apa kabar kalian, mudah-mudahan dalam kondisi sehat semua ya, pada kali ini saya akan melanjutkan pembuatan Toko Online menggunakan Laravel.
Bagi kalian yang belum mengikuti dari awal, kalian bisa mengikuti tutorial sebelumnya mengenai Web Development — Membuat Toko Online menggunakan Laravel — Part 4
Jika sudah mengikuti step sebelumnya, let’s go
Pertama, kita akan menghapus tabel pesanans karena akan menambahkan attribute status pada pesanans
Jika sudah, maka ke migration dan hapus create pesanans
setelah itu kita ke create_pesanans_table untuk menambah attribut status
untuk pesanan_details dihapus dengan cara yang sama karena kita akan menggunakan jumlah
database → migrations → create_pesanans_table.php
public function up()
{
Schema::create('pesanans', function (Blueprint $table) {
$table->bigIncrements('id');
$table->integer('user_id');
$table->date('tanggal');
$table->string('status');
$table->integer('jumlah_harga');
$table->timestamps();
});
}
database → migrations → create_pesanans_details_table.php
public function up()
{
Schema::create('pesanan_details', function (Blueprint $table) {
$table->bigIncrements('id');
$table->integer('barang_id');
$table->integer('pesanan_id');
$table->integer('jumlah');
$table->integer('jumlah_harga');
$table->timestamps();
});
}
setelah itu migrate pada terminal
php artisan migrate
jika database pesanans terbentuk kembali, selanjutnya kita menuju
resource →view →pesan →index.blade.php
untuk mengubah struktur form
<table class="table"><tbody><tr><td>Harga</td><td>:</td><td>Rp. {{ (number_format($barang->nama_harga))}}</td></tr><tr><td>Stok</td><td>:</td><td>{{ number_format($barang->stok) }}</td></tr><tr><td>Keterangan</td><td>:</td><td>{{ $barang->keterangan }}</td></tr><tr><td>Jumlah Pesan</td><td>:</td><td><form action="{{ url('pesan')}}/{{$barang->id}}" method="post">
@csrf<input class="form-control" type="text" name="jumlah_pesan" required=""><button type="submit" class="btn btn-primary"><i class="fa fa-shopping-cart"></i> Masukkan Keranjang</button></form></td></tr><tr><td></td></tr></tbody></table>
tambahkan code berikut di routes →web.php untuk menghubungkan antara tampilan dan controller
Route::post('pesan/{id}', 'PesanController@pesan');
Setelah itu isi function pesan untuk mengelola data transaksi
public function pesan(Request $request, $id){$barang = Barang::where('id', $id)->first();$tanggal = Carbon::now();// validasi apakah melebihi stockif($request->jumlah_pesan > $barang->stok) {return redirect('pesan/'.$id);}// cek validasi$cek_pesanan = Pesanan::where('user_id', Auth::user()->id)->where('status', 0)->first();// simpan ke database pesananif (empty($cek_pesanan)) {$pesanan = new Pesanan;$pesanan->user_id = Auth::user()->id;$pesanan->tanggal = $tanggal;$pesanan->status = 0;$pesanan->jumlah_harga = 0;$pesanan->save();}// simpan ke database pesanan detail$pesanan_baru = Pesanan::where('user_id', Auth::user()->id)->where('status', 0)->first();// cek pesanan detail$cek_pesanan_detail = PesananDetail::where('barang_id', $barang->id)->where('pesanan_id', $pesanan_baru->id)->first();if (empty($cek_pesanan_detail)) {$pesanan_detail = new PesananDetail;$pesanan_detail->barang_id = $barang->id;$pesanan_detail->pesanan_id = $pesanan_baru->id;$pesanan_detail->jumlah = $request->jumlah_pesan;$pesanan_detail->jumlah_harga = $barang->harga*$request->jumlah_pesan;$pesanan_detail->save();} else {$pesanan_detail = PesananDetail::where('barang_id', $barang->id)->where('pesanan_id', $pesanan_baru->id)->first();$pesanan_detail->jumlah = $pesanan_detail->jumlah+$request->jumlah_pesan;// harga sekarang$harga_pesanan_detail_baru = $barang->harga*$request->jumlah_pesan;$pesanan_detail->jumlah_harga = $pesanan_detail->jumlah_harga+$harga_pesanan_detail_baru;$pesanan_detail->update();}// jumlah total$pesanan = Pesanan::where('user_id', Auth::user()->id)->where('status', 0)->first();$pesanan->jumlah_harga = $pesanan->jumlah_harga+ $barang->harga*$request->jumlah_pesan;$pesanan->update();return redirect('home');}
kalian bisa lihat databasemysql, Jika ada transaksi pengguna dengan pengguna yang sama membeli barang sama berulang kali, maka akan masuk kedalam pesanan sebelumnya, lalu jika ada pengguna baru bertransaksi, maka akan dibuat pesanan baru. selain itu, jika pembeli memasukkan jumlah pembelian barang lebih banyak dari penjualan barang. maka transaksi tidak akan berjalan.
Semoga kalian sukses mengikuti tutorial ini, untuk selanjutnya kita akan menggunakan Sweet Alert untuk validasi pada Website ini.
Wassalamualaikum wr.wb