Laravel - Sistem Informasi Perpustakaan Sederhana Laravel

Postingan kali saya akan sharing membuat aplikasi perpustakaan sederhana menggunakan laravel 5.8, dimana terdapan menu Anggota, Kategori Buku, Daftar Buku dan Transaksi (Peminjaman/Pengembalian Buku).

ok langsung saja kita buat project laravel dengan nama perpus :

composer create-project --prefer-dist laravel/laravel perpus

setelah create project laravel-nya selesai kita buat database melalui localhost/phpmyadmin dengan nama db_perpus, lalu kita buka project laravel dengan code editor disini saya menggunakan visual studio code.

Setelah project kita buka dengan code editor, pertama kita atur koneksi database yang ada di file .env, kita rubah menjadi seperti berikut :



note : untuk db_username dan db_password di sesuiakan dengan configurasi masing-masing.

Selanjutnya kita tambahkan 4 buah data migration yaitu : table_anggota, table_kategori, table_buku, table_transaksi, kita buka terminal dan jalankan command berikut : 

php artisan make:migration create_table_anggota
php artisan make:migration create_table_buku
php artisan make:migration create_table_kategori
php artisan make:migration create_table_transaksi

lalu kita edit masing-masing migration seperti berikut :

migration table_anggota
public function up()
{
Schema::create('table_anggota', function (Blueprint $table) {
$table->bigIncrements('id_anggota');
$table->string('nama_anggota',50);
$table->string('jenis_kelamin',50);
$table->string('alamat');
$table->string('email',50);
$table->string('no_telp',20);
$table->timestamps();
});
}

migration table_buku
public function up()
{
Schema::create('table_buku', function (Blueprint $table) {
$table->bigIncrements('id_buku');
$table->string('judul_buku', 40);
$table->string('deskripsi', 100);
$table->integer('kategori');
$table->string('cover_img', 50);
$table->timestamps();
});
}

migration table_kategori
public function up()
{
Schema::create('table_kategori', function (Blueprint $table) {
$table->bigIncrements('kategori');
$table->string('deskripsi');
$table->timestamps();
});
}

migration table_transaksi
public function up()
{
Schema::create('table_transaksi', function (Blueprint $table) {
$table->bigIncrements('id');
$table->integer('id_anggota');
$table->integer('id_buku');
$table->date('tgl_pinjam');
$table->date('tgl_kembali');
$table->timestamps();
});
}

Setelah semua migration dibuat seperti diatas, selanjutnya kita lakukan migration tapi sebelum melakukan migration kita buka file AppServiceProvider.php yang ada di folder app/Providers dan kita rubah isinya menjadi seperti berikut :
<?php
namespace App\Providers;
use Illuminate\Support\ServiceProvider;
use Illuminate\Support\Facades\Schema;
class AppServiceProvider extends ServiceProvider
{
/**
* Register any application services.
*
* @return void
*/
public function register()
{
//
}
/**
* Bootstrap any application services.
*
* @return void
*/
public function boot()
{
Schema::defaultStringLength(191);
}
}

tujuan kita merubah file AppServiceProvider.php ini adalah agar tidak terjadi error ketikan kita menjalankan perintah migrate, jalankan command berikut melalui terminal untuk melakukan migrate:

php artisan migrate

jika sudah, kita buka phpmyadmin lagi dan kita buka database yang sudah kita buat tadi, yaitu db_perpus maka akan terlihat table-table yang sudah kita buat di migration tadi seperti berikut :



Selanjutnya kita buka project laravel lagi, kita tambahkan 4 buah model yaitu : Anggota, Buku, Kategori, dan Transaksi. untuk membuat model kita jalankan command berikut  :

php artisan make:model Anggota
php artisan make:model Buku
php artisan make:model Kategori
php artisan make:model Transaksi

lalu kita edit masing-masing model menjadi seperti berikut :

Model Aggota
<?php
namespace App;
use Illuminate\Database\Eloquent\Model;
class Anggota extends Model
{
protected $table = 'table_anggota';
protected $fillable = ['nama_anggota','jenis_kelamin','alamat', 'email','no_telp'];
}
Model Buku
<?php
namespace App;
use Illuminate\Database\Eloquent\Model;
class Buku extends Model
{
protected $table = 'table_buku';
protected $fillable = ['judul_buku','deksripsi','kategori','cover_img'];
}
Model Kategori
<?php
namespace App;
use Illuminate\Database\Eloquent\Model;
class Kategori extends Model
{
protected $table = 'table_kategori';
protected $fillable = ['deskripsi'];
}
Model Transaksi
<?php
namespace App;
use Illuminate\Database\Eloquent\Model;
class Transaksi extends Model
{
protected $table = 'table_transaksi';
protected $fillable = ['id_anggota', 'id_buku', 'tgl_pinjam'];
}

Selanjutnya kita akan membuat view, pertama kita tambahkan 5 folder baru didalam folder resources/views yaitu folder anggota, buku, kategori, transaksi dan layout



kita buat file main.blade.php didalam folder layout

<!doctype html>
<html lang="en">
<head>
<!-- Required meta tags -->
<meta charset="utf-8">
<meta name="viewport" content="width=device-width, initial-scale=1,
shrink-to-fit=no">
<!-- Bootstrap CSS -->
<link rel="stylesheet"
href="https://stackpath.bootstrapcdn.com/bootstrap/4.3.1/css/bootstrap.min.css">
<script src="https://code.jquery.com/jquery-3.2.1.min.js"></script>
<script
src="https://cdnjs.cloudflare.com/ajax/libs/popper.js/1.14.7/umd/popper.min.js">
</script>
<script
src="https://stackpath.bootstrapcdn.com/bootstrap/4.3.1/js/bootstrap.min.js">
</script>
<title>@yield('title')</title>
</head>
<body>
<div class="container">
<nav class="navbar navbar-expand-lg navbar-dark bg-dark">
<a class="navbar-brand" href="/">HOME</a>
<button class="navbar-toggler" type="button"
data-toggle="collapse" data-target="#navbarNavAltMarkup"
aria-controls="navbarNavAltMarkup" aria-expanded="false"
aria-label="Toggle navigation">
<span class="navbar-toggler-icon"></span>
</button>
<div class="collapse navbar-collapse" id="navbarNavAltMarkup">
<div class="navbar-nav">
<a class="nav-item nav-link" href="/anggota">Anggota</a>
<a class="nav-item nav-link" href="/kategori">Kategori Buku</a>
<a class="nav-item nav-link" href="/buku">Daftar Buku</a>
<a class="nav-item nav-link" href="/transaksi">Transaksi</a>
</div>
</div>
</nav>
</div>
@yield('content')
<!-- Optional JavaScript -->
<!-- jQuery first, then Popper.js, then Bootstrap JS -->
</body>
</html>

dan didalam folder views kita buat file inde.blade.php
@extends('layout.main')
@section('title', 'Laravel - SI Perpustakaan')
@section('content')
<div class="container">
<div class="jumbotron">
<h1 class="display-4">Selamat Datang!</h1>
<p class="lead">Ini adalah contoh sistem informasi
perpustakaan sederhana dengan laravel 5.8</p>
<hr class="my-4">
</div>
</div>
@endsection

didalam folder anggota kita buat dua view yaitu index.blade.php dan create.blade.php

index.blade.php
@extends('layout.main')
@section('title', 'Laravel - SI Perpustakaan')
@section('content')
<div class="container">
<div class="jumbotron">
@if(session('msg'))
<div class="alert alert-success alert-dismissible fade show mt-2"
role="alert">
{{session('msg')}}
<button type="button" class="close" data-dismiss="alert"
aria-label="Close">
<span aria-hidden="true">&times;</span>
</button>
</div>
@endif
<h1 class="display-6">Data Anggota</h1>
<hr class="my-4">
<a href="anggota/create" class="btn btn-primary mb-1">
Tambah Anggota</a>
<table class="table">
<thead class="thead-dark">
<tr>
<th scope="col">#</th>
<th scope="col">Nama</th>
<th scope="col">Alamat</th>
<th scope="col">Jenis Kelamin</th>
<th scope="col">Email</th>
<th scope="col">No. HP</th>
<th></th>
</tr>
</thead>
<tbody>
@foreach ($anggota as $ang)
<tr>
<td>{{ $loop->iteration }}</td>
<td>{{ $ang->nama_anggota }}</td>
<td>{{ $ang->alamat }}</td>
<td>{{ $ang->jenis_kelamin }}</td>
<td>{{ $ang->email }}</td>
<td>{{ $ang->no_telp }}</td>
<td>
<a href="" class="badge badge-primary">Edit</a>
<a href="" class="badge badge-danger">Hapus</a>
</td>
</tr>
@endforeach
</tbody>
</table>
</div>
</div>
@endsection

create.blade.php
@extends('layout.main')
@section('title', 'Laravel - SI Perpustakaan')
@section('content')
<div class="container">
<div class="jumbotron">
<h1 class="display-6">Tambah Data Anggota</h1>
<hr class="my-4">
<form action="/anggota" method="POST">
@csrf
<div class="form-group">
<label for="nama">Nama Anggota</label>
<input type="text" class="form-control" id="nama"
name="nama_anggota" placeholder="Nama Anggota"
value="{{ old('nama_anggota') }}">
</div>
<div class="form-group">
<label for="alamat">Alamat</label>
<input type="text" class="form-control" id="alamat"
name="alamat" placeholder="Alamat Anggota"
value="{{ old('alamat') }}">
</div>
<div class="form-group">
<label for="jenis_kelamin">Jenis Kelamin</label>
<select class="form-control" id="jenis_kelamin"
name="jenis_kelamin">
<option value="laki-laki">Laki-laki</option>
<option value="perempuan">Perempuan</option>
</select>
</div>
<div class="form-group">
<label for="email">Alamat Email</label>
<input type="email" class="form-control" id="email"
name="email" aria-describedby="emailHelp"
placeholder="Enter email" value="{{ old('email') }}">
</div>
<div class="form-group">
<label for="no_telp">No. HP</label>
<input type="text" class="form-control" id="no_telp"
name="no_telp" placeholder="NO. HP"
value="{{ old('no_telp') }}">
</div>
<button type="submit" class="btn btn-primary">Simpan</button>
</form>
</div>
</div>
@endsection


di folder buku kita buat juga dua view index.blade.php dan create.blade.php

buku-> create.blade.php
@extends('layout.main')
@section('title', 'Laravel - SI Perpustakaan')
@section('content')
<div class="container">
<div class="jumbotron">
<h1 class="display-6">Tambah Data Buku</h1>
<hr class="my-4">
<form action="/buku" method="POST" enctype="multipart/form-data">
@csrf
<div class="form-group">
<label for="judul_buku">Judul Buku</label>
<input type="text" class="form-control" name="judul_buku"
placeholder="Judul Buku" value="{{ old('judul_buku') }}">
</div>
<div class="form-group">
<label for="deskripsi">Deskripsi Buku</label>
<input type="text" class="form-control" name="deskripsi"
placeholder="Deskripsi Buku" value="{{ old('deskripsi') }}">
</div>
<div class="form-group">
<label for="kategori">Kategori Buku</label>
<select class="form-control" id="kategori" name="kategori">
@foreach ($kategori as $kat)
<option value="{{ $kat->kategori }}">
{{ $kat->deskripsi }}</option>
@endforeach
</select>
</div>
<div class="form-group">
<label for="cover_img">Cover Buku</label>
<input type="file" name="cover_img">
</div>
<button type="submit" class="btn btn-primary">Simpan</button>
</form>
</div>
</div>
@endsection

buku-> index.blade.php
@extends('layout.main')
@section('title', 'Laravel - SI Perpustakaan')
@section('content')
<div class="container">
<div class="jumbotron">
@if(session('msg'))
<div class="alert alert-success alert-dismissible fade show mt-2"
role="alert">
{{session('msg')}}
<button type="button" class="close" data-dismiss="alert"
aria-label="Close">
<span aria-hidden="true">&times;</span>
</button>
</div>
@endif
<h1 class="display-6">Data Buku</h1>
<hr class="my-4">
<a href="buku/create" class="btn btn-primary mb-1">Tambah Buku</a>
<table class="table">
<thead class="thead-dark">
<tr>
<th scope="col">#</th>
<th scope="col">Judul Buku</th>
<th scope="col">Deskripsi Buku</th>
<th scope="col">Kategori Buku</th>
<th scope="col">Cover Buku</th>
<th></th>
</tr>
</thead>
<tbody>
@foreach ($buku as $buku)
<tr>
<td>{{ $loop->iteration }}</td>
<td>{{ $buku->judul_buku }}</td>
<td>{{ $buku->deskripsi }}</td>
<td>{{ $buku->kategori }}</td>
<td><img src='image/{{ $buku->cover_img }}'
style='width:80px; height:50px;'></td>
<td>
<a href="buku/edit/{{ $buku->id_buku }}"
class="badge badge-primary">Edit</a>
<a href="buku/destroy/{{ $buku->id_buku }}"
class="badge badge-danger">Hapus</a>
</td>
</tr>
@endforeach
</tbody>
</table>
</div>
</div>
@endsection

di folder kategori juga kita buat view index.blade.php dan create.blade.php

kategori->index.blade.php
@extends('layout.main')
@section('title', 'Laravel - SI Perpustakaan')
@section('content')
<div class="container">
<div class="jumbotron">
@if(session('msg'))
<div class="alert alert-success alert-dismissible fade show mt-2"
role="alert">
{{session('msg')}}
<button type="button" class="close" data-dismiss="alert"
aria-label="Close">
<span aria-hidden="true">&times;</span>
</button>
</div>
@endif
<h1 class="display-6">Kategori Buku</h1>
<hr class="my-4">
<a href="kategori/create" class="btn btn-primary mb-1">
Tambah Kategori Buku</a>
<table class="table">
<thead class="thead-dark">
<tr>
<th scope="col">#</th>
<th scope="col">Kategori</th>
<th></th>
</tr>
</thead>
<tbody>
@foreach ($kategori as $kat)
<tr>
<td>{{ $loop->iteration }}</td>
<td>{{ $kat->deskripsi }}</td>
<td>
<a href="" class="badge badge-primary">Edit</a>
<a href="" class="badge badge-danger">Hapus</a>
</td>
</tr>
@endforeach
</tbody>
</table>
</div>
</div>
@endsection
kategori->create.blade.php
@extends('layout.main')
@section('title', 'Laravel - SI Perpustakaan')
@section('content')
<div class="container">
<div class="jumbotron">
<h1 class="display-6">Tambah Kategori Buku</h1>
<hr class="my-4">
<form action="/kategori" method="POST">
@csrf
<div class="form-group">
<label for="deskripsi">Deskripsi</label>
<input type="text" class="form-control" id="deskripsi"
name="deskripsi" placeholder="Deskripsi"
value="{{ old('deskripsi') }}">
</div>
<button type="submit" class="btn btn-primary">Simpan</button>
</form>
</div>
</div>
@endsection

dan di folder transaksi kita buat 3 view yaitu : index.blade.php, pinjam.blade.php dan kembali.blade.php

transaksi->index.blade.php
@extends('layout.main')
@section('title', 'Laravel - SI Perpustakaan')
@section('content')
<div class="container">
<div class="jumbotron">
@if(session('msg'))
<div class="alert alert-success alert-dismissible fade show mt-2"
role="alert">
{{session('msg')}}
<button type="button" class="close" data-dismiss="alert"
aria-label="Close">
<span aria-hidden="true">&times;</span>
</button>
</div>
@endif
<h1 class="display-6">Data Peminjaman Buku</h1>
<hr class="my-4">
<a href="transaksi/create" class="btn btn-primary mb-1">
Peminjaman Buku</a>
<!-- <a href="buku/kembali" class="btn btn-primary mb-1">Pengembalian Buku</a> -->
<table class="table">
<thead class="thead-dark">
<tr>
<th scope="col">No. Peminjaman</th>
<th scope="col">Judul Buku</th>
<th scope="col">Deskripsi Buku</th>
<th scope="col">Kategori Buku</th>
<th scope="col">Tanggal Pinjam</th>
<th scope="col">Tanggal Kembali</th>
<th></th>
</tr>
</thead>
<tbody>
@foreach ($transaksi as $trans)
<tr>
<td>{{ $trans->id }}</td>
<td>{{ $trans->judul_buku }}</td>
<td>{{ $trans->deskripsi }}</td>
<td>{{ $trans->kategori }}</td>
<td>{{ $trans->tgl_pinjam }}</td>
<td>{{ $trans->tgl_kembali }}</td>
<td>
@if($trans->tgl_kembali == null)
<a href="transaksi/edit/{{ $trans->id }}"
class="badge badge-primary">Pengembalian</a>
@else
<p class="badge badge-success">Dikembalikan</p>
@endif
</td>
</tr>
@endforeach
</tbody>
</table>
</div>
</div>
@endsection

transaksi->pinjam.blade.php
@extends('layout.main')
@section('title', 'Laravel - SI Perpustakaan')
@section('content')
<div class="container">
<div class="jumbotron">
<h1 class="display-6">Pinjam Buku</h1>
<hr class="my-4">
<form action="/transaksi" method="POST" enctype="multipart/form-data">
@csrf
<div class="form-group">
<label for="type_transaksi">Type Transaksi</label>
<select class="form-control" id="type_transaksi"
name="type_transaksi">
<option value="pinjam">Pinjam</option>
</select>
</div>
<div class="form-group">
<label for="id_buku">Kode Buku</label>
<input type="text" class="form-control" id="id_buku"
name="id_buku" placeholder="ID Buku" data-url="{{ url('/') }}">
</div>
<div class="form-group">
<label for="judul_buku">Judul Buku</label>
<input type="text" class="form-control" id="judul_buku"
name="judul_buku" placeholder="Judul Buku" readonly="true">
</div>
<div class="form-group">
<label for="deskripsi">Deskripsi Buku</label>
<input type="text" class="form-control" id="deskripsi"
name="deskripsi" placeholder="Deskripsi Buku" readonly="true">
</div>
<div class="form-group">
<label for="kategori">Kategori Buku</label>
<input type="text" class="form-control" id="kategori"
name="kategori" placeholder="Kategori Buku" readonly="true">
</div>
<div class="form-group">
<div class="row">
<div class="col-sm-6">
<label for="kategori">Tanggal Pinjam</label>
<input type="date" class="form-control"
name="tgl_pinjam">
</div>
<div class="col-sm-6">
<label for="kategori">Tanggal Kembali</label>
<input type="date" class="form-control"
name="tgl_kembali" readonly="true">
</div>
</div>
</div>
<div class="form-group">
<label for="id_anggota">ID Anggota Peminjam</label>
<input type="text" class="form-control" id="id_anggota"
name="id_anggota" placeholder="ID Anggota" data-url="{{ url('/') }}">
</div>
<div class="form-group">
<label for="nama_anggota">Nama Peminjam</label>
<input type="text" class="form-control" id="nama_anggota"
name="nama_anggota" readonly="true">
</div>
<button type="submit" class="btn btn-primary">Simpan</button>
</form>
</div>
</div>
<script>
$(function(){
$('#id_buku').on('change', function(e){
let id_buku = $('#id_buku').val();
console.log(id_buku);
let url = $(this).data('url')+'/transaksi/showBuku/'+id_buku;
console.log(url);
getBuku(url);
})
$('#id_anggota').on('change', function(e){
let id_anggota = $('#id_anggota').val();
console.log(id_anggota);
let url = $(this).data('url')+'/transaksi/getAnggota/'+id_anggota;
console.log(url);
getAnggota(url);
})
})
function getBuku(url){
$.getJSON(url, function(data){
if(data === false){
alert('Buku tidak ditemukan!');
$('#id_buku').val("");
}else{
$('#judul_buku').val(data[0].judul_buku);
$('#deskripsi').val(data[0].deskripsi);
$('#kategori').val(data[0].kategori);
}
});
}
function getAnggota(url){
$.getJSON(url, function(data){
if(data === false){
alert('Data anggota tidak ditemukan!');
$('#id_anggota').val("");
$('#nama_anggota').val("");
}else{
$('#nama_anggota').val(data.nama_anggota);
}
});
}
</script>
@endsection

transaksi->kembali.blade.php
@extends('layout.main')
@section('title', 'Laravel - SI Perpustakaan')
@section('content')
<div class="container">
<div class="jumbotron">
<h1 class="display-6">Pinjam Buku</h1>
<hr class="my-4">
<form
action="{{ action('TransaksiController@update', $pinjaman->id) }}"
method="POST">
@csrf
<div class="form-group">
<label for="type_transaksi">Type Transaksi</label>
<select class="form-control" id="type_transaksi"
name="type_transaksi">
<option value="kembali">Kembali</option>
</select>
</div>
<div class="form-group">
<label for="id_buku">Kode Buku</label>
<input type="text" class="form-control" id="id_buku"
name="id_buku" value="{{ $pinjaman->id_buku }}" readonly="true">
</div>
<div class="form-group">
<label for="judul_buku">Judul Buku</label>
<input type="text" class="form-control" id="judul_buku"
name="judul_buku" value="{{ $pinjaman->judul_buku }}" readonly="true">
</div>
<div class="form-group">
<label for="deskripsi">Deskripsi Buku</label>
<input type="text" class="form-control" id="deskripsi"
name="deskripsi" value="{{ $pinjaman->deskripsi }}" readonly="true">
</div>
<div class="form-group">
<label for="kategori">Kategori Buku</label>
<input type="text" class="form-control" id="kategori"
name="kategori" value="{{ $pinjaman->kategori }}" readonly="true">
</div>
<div class="form-group">
<div class="row">
<div class="col-sm-6">
<label for="kategori">Tanggal Pinjam</label>
<input type="date" class="form-control"
name="tgl_pinjam" value="{{ $pinjaman->tgl_pinjam }}" readonly="true">
</div>
<div class="col-sm-6">
<label for="kategori">Tanggal Kembali</label>
<input type="date" class="form-control"
name="tgl_kembali">
</div>
</div>
</div>
<div class="form-group">
<label for="id_anggota">ID Anggota Peminjam</label>
<input type="text" class="form-control" id="id_anggota"
name="id_anggota" value="{{ $pinjaman->id_anggota }}" readonly="true">
</div>
<div class="form-group">
<label for="nama_anggota">Nama Peminjam</label>
<input type="text" class="form-control" id="nama_anggota"
name="nama_anggota" readonly="true" value="{{ $pinjaman->nama_anggota }}">
</div>
<button type="submit" class="btn btn-primary">Simpan</button>
</form>
</div>
</div>
<script>
$(function(){
$('#id_buku').on('change', function(e){
let id_buku = $('#id_buku').val();
console.log(id_buku);
let url = $(this).data('url')+'/transaksi/showBuku/'+id_buku;
console.log(url);
getBuku(url);
})
$('#id_anggota').on('change', function(e){
let id_anggota = $('#id_anggota').val();
console.log(id_anggota);
let url = $(this).data('url')+'/transaksi/getAnggota/'+id_anggota;
console.log(url);
getAnggota(url);
})
})
function getBuku(url){
$.getJSON(url, function(data){
if(data === false){
alert('Buku tidak ditemukan!');
$('#id_buku').val("");
}else{
$('#judul_buku').val(data[0].judul_buku);
$('#deskripsi').val(data[0].deskripsi);
$('#kategori').val(data[0].kategori);
}
});
}
function getAnggota(url){
$.getJSON(url, function(data){
if(data === false){
alert('Data anggota tidak ditemukan!');
$('#id_anggota').val("");
$('#nama_anggota').val("");
}else{
$('#nama_anggota').val(data.nama_anggota);
}
});
}
</script>
@endsection

selanjutnya kita akan menambahkan controller, untuk membuat controller jalankan command berikut :

php artisan make:controller AnggotaController -r
php artisan make:controller BukuController -r
php artisan make:controller KategoriController -r
php artisan make:controller TransaksiController -r

dan kita update masing-masing controller menjadi seperti berikut :

AnggotaController

<?php
namespace App\Http\Controllers;
use Illuminate\Http\Request;
use App\Anggota;
class AnggotaController extends Controller
{
/**
* Display a listing of the resource.
*
* @return \Illuminate\Http\Response
*/
public function index()
{
$anggota = Anggota::all();
return view('anggota.index', compact('anggota'));
}
/**
* Show the form for creating a new resource.
*
* @return \Illuminate\Http\Response
*/
public function create()
{
return view('anggota.create');
}
/**
* Store a newly created resource in storage.
*
* @param \Illuminate\Http\Request $request
* @return \Illuminate\Http\Response
*/
public function store(Request $request)
{
Anggota::create($request->all());
return redirect('anggota')->with('msg','Data Berhasil di Simpan');
}
/**
* Display the specified resource.
*
* @param int $id
* @return \Illuminate\Http\Response
*/
public function show($id)
{
//
}
/**
* Show the form for editing the specified resource.
*
* @param int $id
* @return \Illuminate\Http\Response
*/
public function edit($id)
{
//
}
/**
* Update the specified resource in storage.
*
* @param \Illuminate\Http\Request $request
* @param int $id
* @return \Illuminate\Http\Response
*/
public function update(Request $request, $id)
{
//
}
/**
* Remove the specified resource from storage.
*
* @param int $id
* @return \Illuminate\Http\Response
*/
public function destroy($id)
{
//
}
}

BukuController

<?php
namespace App\Http\Controllers;
use Illuminate\Http\Request;
use DB;
use App\Buku;
use App\Kategori;
class BukuController extends Controller
{
/**
* Display a listing of the resource.
*
* @return \Illuminate\Http\Response
*/
public function index()
{
$buku = DB::table('table_buku')
->join('table_kategori', 'table_buku.kategori', '=', 'table_kategori.kategori')
->select('table_buku.id_buku','table_buku.judul_buku', 'table_buku.deskripsi',
'table_kategori.deskripsi as kategori', 'table_buku.cover_img')
->get();
// return $buku;
return view('buku.index', compact('buku'));
}
/**
* Show the form for creating a new resource.
*
* @return \Illuminate\Http\Response
*/
public function create()
{
$kategori = Kategori::all();
return view('buku.create', compact('kategori'));
}
/**
* Store a newly created resource in storage.
*
* @param \Illuminate\Http\Request $request
* @return \Illuminate\Http\Response
*/
public function store(Request $request)
{
$this->validate($request, [
'judul_buku' => 'required',
'deskripsi' => 'required',
]);
$file = $request->file('cover_img');
$buku = new Buku;
$buku->judul_buku = $request->judul_buku;
$buku->deskripsi = $request->deskripsi;
$buku->kategori = $request->kategori;
$buku->cover_img = $file->getClientOriginalName();
$tujuan_upload = 'image';
     $file->move($tujuan_upload,$file->getClientOriginalName());
$buku->save();
return redirect('buku')->with('msg','Data Berhasil di Simpan');
}
/**
* Display the specified resource.
*
* @param int $id
* @return \Illuminate\Http\Response
*/
public function show($id)
{
$buku = Buku::where('id_buku', $id)->first();
return $buku;
}
/**
* Show the form for editing the specified resource.
*
* @param int $id
* @return \Illuminate\Http\Response
*/
public function edit($id)
{
//
}
/**
* Update the specified resource in storage.
*
* @param \Illuminate\Http\Request $request
* @param int $id
* @return \Illuminate\Http\Response
*/
public function update(Request $request, $id)
{
//
}
/**
* Remove the specified resource from storage.
*
* @param int $id
* @return \Illuminate\Http\Response
*/
public function destroy($id)
{
//
}
}

KategoriController

<?php
namespace App\Http\Controllers;
use Illuminate\Http\Request;
use App\Kategori;
class KategoriController extends Controller
{
/**
* Display a listing of the resource.
*
* @return \Illuminate\Http\Response
*/
public function index()
{
$kategori = Kategori::all();
// return $kategori;
// return view('kategori.index', compact('kategori'));
return view('kategori/index', compact('kategori'));
}
/**
* Show the form for creating a new resource.
*
* @return \Illuminate\Http\Response
*/
public function create()
{
return view('kategori.create');
}
/**
* Store a newly created resource in storage.
*
* @param \Illuminate\Http\Request $request
* @return \Illuminate\Http\Response
*/
public function store(Request $request)
{
Kategori::create($request->all());
return redirect('kategori')->with('msg','Data Berhasil di Simpan');
}
/**
* Display the specified resource.
*
* @param int $id
* @return \Illuminate\Http\Response
*/
public function show($id)
{
//
}
/**
* Show the form for editing the specified resource.
*
* @param int $id
* @return \Illuminate\Http\Response
*/
public function edit($id)
{
//
}
/**
* Update the specified resource in storage.
*
* @param \Illuminate\Http\Request $request
* @param int $id
* @return \Illuminate\Http\Response
*/
public function update(Request $request, $id)
{
//
}
/**
* Remove the specified resource from storage.
*
* @param int $id
* @return \Illuminate\Http\Response
*/
public function destroy($id)
{
//
}
}

TransaksiController

<?php
namespace App\Http\Controllers;
use Illuminate\Http\Request;
use DB;
use App\Buku;
use App\Kategori;
use App\Anggota;
use App\Transaksi;
class TransaksiController extends Controller
{
/**
* Display a listing of the resource.
*
* @return \Illuminate\Http\Response
*/
public function index()
{
$transaksi = DB::table('table_transaksi')
->join('table_buku', 'table_buku.id_buku', '=', 'table_transaksi.id_buku')
->join('table_kategori', 'table_kategori.kategori', '=', 'table_buku.kategori')
->join('table_anggota', 'table_transaksi.id_anggota', '=', 'table_anggota.id_anggota')
->select('table_transaksi.id','table_anggota.nama_anggota','table_buku.id_buku',
'table_buku.judul_buku',
'table_buku.deskripsi', 'table_kategori.deskripsi as kategori',
'table_transaksi.tgl_pinjam','table_transaksi.tgl_kembali')
->get();
// return $transaksi;
return view('transaksi.index', compact('transaksi'));
}
/**
* Show the form for creating a new resource.
*
* @return \Illuminate\Http\Response
*/
public function create()
{
return view('transaksi.pinjam');
}
/**
* Store a newly created resource in storage.
*
* @param \Illuminate\Http\Request $request
* @return \Illuminate\Http\Response
*/
public function store(Request $request)
{
if(Anggota::where('id_anggota', $request->id_anggota)->count() > 0){
if(Buku::where('id_buku', $request->id_buku)->count() > 0){
// return $request;
$transaksi = new Transaksi;
// $transaksi->type_transaksi = $request->type_transaksi;
$transaksi->id_anggota = $request->id_anggota;
$transaksi->id_buku = $request->id_buku;
if($request->type_transaksi == 'pinjam'){
$transaksi->tgl_pinjam = $request->tgl_pinjam;
$transaksi->tgl_kembali = null;
$transaksi->save();
return redirect('transaksi')->with('msg','Data Berhasil di Simpan');
}else{
$transaksi->tgl_kembali = $request->tgl_kembali;
}
// return $transaksi;
}else{
return json_encode('Buku tidak ditemukan!');
}
}else{
return json_encode('Anggota tidak ditemukan');
}
}
/**
* Display the specified resource.
*
* @param int $id
* @return \Illuminate\Http\Response
*/
public function show($id)
{
$pinjaman = DB::table('table_transaksi')
->join('table_buku', 'table_buku.id_buku', '=', 'table_transaksi.id_buku')
->join('table_anggota', 'table_anggota.id_anggota', '=', 'table_transaksi.id_anggota')
->join('table_kategori', 'table_kategori.kategori', '=', 'table_buku.kategori')
->select('table_transaksi.id','table_transaksi.id_anggota', 'table_anggota.nama_anggota',
'table_buku.id_buku', 'table_buku.judul_buku','table_buku.deskripsi',
'table_kategori.deskripsi as kategori','table_transaksi.tgl_pinjam',
'table_transaksi.tgl_kembali')
->where('table_transaksi.id', '=', $id)->first();
return json_encode($pinjaman);
}
public function showBuku($id)
{
// $buku = Buku::where('id_buku', $id)->first();
if(Buku::where('id_buku', $id)->count() > 0){
$buku = DB::table('table_buku')
->join('table_kategori', 'table_buku.kategori', '=', 'table_kategori.kategori')
->select('table_buku.id_buku','table_buku.judul_buku', 'table_buku.deskripsi',
'table_kategori.deskripsi as kategori', 'table_buku.cover_img')
->where('table_buku.id_buku', '=', $id)
->get();
return $buku;
}else{
return 'false';
}
}
public function getAnggota($id)
{
// $buku = Buku::where('id_buku', $id)->first();
$anggota = Anggota::where('id_anggota', $id)->first();
// return $anggota;
if($anggota === null){
return 'false';
}else{
return $anggota;
}
}
/**
* Show the form for editing the specified resource.
*
* @param int $id
* @return \Illuminate\Http\Response
*/
public function edit($id)
{
$pinjaman = DB::table('table_transaksi')
->join('table_buku', 'table_buku.id_buku', '=', 'table_transaksi.id_buku')
->join('table_anggota', 'table_anggota.id_anggota', '=', 'table_transaksi.id_anggota')
->join('table_kategori', 'table_kategori.kategori', '=', 'table_buku.kategori')
->select('table_transaksi.id','table_transaksi.id_anggota', 'table_anggota.nama_anggota',
'table_buku.id_buku', 'table_buku.judul_buku','table_buku.deskripsi',
'table_kategori.deskripsi as kategori','table_transaksi.tgl_pinjam',
'table_transaksi.tgl_kembali')
->where('table_transaksi.id', '=', $id)->first();
return view('transaksi.kembali', compact('pinjaman'));
}
/**
* Update the specified resource in storage.
*
* @param \Illuminate\Http\Request $request
* @param int $id
* @return \Illuminate\Http\Response
*/
public function update(Request $request, $id)
{
Transaksi::where('id',$id)
->update(['tgl_kembali' => $request->tgl_kembali]);
return redirect('transaksi')->with('msg','Buku Telah dikembalikan');
}
/**
* Remove the specified resource from storage.
*
* @param int $id
* @return \Illuminate\Http\Response
*/
public function destroy($id)
{
//
}
}

Terakhir kita tambahkan Route didalam folder Routes/web.php

<?php
/*
|--------------------------------------------------------------------------
| Web Routes
|--------------------------------------------------------------------------
|
| Here is where you can register web routes for your application. These
| routes are loaded by the RouteServiceProvider within a group which
| contains the "web" middleware group. Now create something great!
|
*/
Route::get('/', function () {
return view('index');
});
Route::resource('anggota','AnggotaController');
Route::resource('kategori','KategoriController');
Route::resource('buku','BukuController');
Route::resource('transaksi','TransaksiController');
Route::get('transaksi/edit/{id}', 'TransaksiController@edit');
Route::get('transaksi/showBuku/{id}', 'TransaksiController@showBuku');
Route::get('transaksi/getAnggota/{id}', 'TransaksiController@getAnggota');
Route::post('/transaksi/update/{id}', 'TransaksiController@update');


Jika sudah kita coba jalankan dan lihat hasilnya di browser, kita jalankan development server bawaan laravel dengan menjalnakan command berikut :

php artisan serve



kita jalankan localhost:8000 di browser dan hasilnya seperti berikut :











contoh program ini masih sangat sederhana agar mudah di fahami, silahkan dikembangkan lagi untuk menambahkan fasilitan edit data dan login.
Demikian sharing kali ini, semoga bermanfaat... :D

Comments

  1. min tolong gimana cara editnya soalnya saya sudah gak bisa lagi

    ReplyDelete
  2. program saya sudah selesai, hanya saja kurang bagian edit foto

    ReplyDelete
  3. Mantap gan, kunjungi website saya.. Siapa tau ada artikel yang cocok


    https://www.coderpartai.com

    ReplyDelete
  4. Misi kak, itu pada bagian index yg buat data buku di bagian kategori itu kan harusnya integer ya, biar tampil jadi sesuai deskripsi kategori nya gimana ya?

    ReplyDelete
  5. mas boleh minta kontaknya untuk tanya2 buat tugas saya ? boleh di pm kontanya

    ReplyDelete
  6. ka kalau mau ubah wrna backgroundnya bagimana ya ka ? saya cari gaada

    ReplyDelete
  7. kak kenapa controler saya gk jalan yh

    ReplyDelete

Post a Comment

Popular posts from this blog

PHP MySql CRUD Dengan Konsep MVC

IT Asset Management Dengan PHP MySQL