Membuat CRUD dengan Laravel 5.8
Hallo Selamat malam, kali ini kita akan belajar Laravel. Ok langsung aja kita install dulu laravelnya kita akan menginstall laravel terbaru versi 5.8 tapi sebelumnya kita harus upgrade dulu PHP kita ke versi 7 karena PHP 5.6 hanya bisa menginstall laravel sampai versi 5.4, setelah menginstall PHP versi 7 selanjutnya kita install composer, anda bisa mendownloadnya di website composer https://getcomposer.org/. Selanjutnya download laravel ke dalam folder project kita dengan perintah:composer create-project --prefer-dist laravel/laravel laravel58crud
sekarang masuk ke dalam folder project dan buka text editor
cd laravel58crud
code .
#1 Configurasi database
untuk databasenya kita akan menggunakan MySQL. sekarang kita buat databasenya dengan nama laravel58crud kemudian buka file .env dan atur konfigurasi database seperti berikut
DB_CONNECTION=mysql
DB_HOST=127.0.0.1
DB_PORT=3306
DB_DATABASE=laravel58crud
DB_USERNAME=root
DB_PASSWORD=root
sekarang project kita sudah terhubung dengan database MySQL
Selanjutnya kita akan melakukan migrasi database, buka terminal dan ketikan perintah
php artisan migrate
Kita akan membuat Program penyimpanan Nama buku yang bisa melakukan operasi CRUD create, read, update, delete
#2 Membuat Model dan Migrasi file
php artisan make:model Book -m
akan terbentuk file Book.php dan file migrasi create_books_table.php
Sekarang buka folder databse->migrations->create_books_table.php sesuaikan seperti berikut:
public function up()
{
Schema::create('books', function (Blueprint $table) {
$table->bigIncrements('id');
$table->string('book_name');
$table->string('isbn_no');
$table->integer('book_price');
$table->timestamps();
});
}
sekarang lakukan migrasi dan akan terbentuk table baru di database
php artisan migrate
Sekarang, tambahkan fillable property dalam file Book.php.
// Book.php
<?php
namespace App;
use Illuminate\Database\Eloquent\Model;
class Book extends Model
{
protected $fillable = ['book_name', 'isbn_no', 'book_price'];
}
#3 Membuat route dan Controller
buat BookController dengan perintahphp artisan make:controller BookController --resource
didalam routes >> web.php tambahkan kode berikut:
<?php
// BookController.php
Route::get('/', function () {
return view('welcome');
});
Route::resource('books', 'BookController');
kita bisa melihat list route aplikasi kita dengan perintah
php artisan route:list
Ok Sekarang buka BookController.php kita akan melihat semua fungsi yang di deklarasikan disini
<?php
// BookController.php
namespace App\Http\Controllers;
use Illuminate\Http\Request;
class BookController extends Controller
{
/**
* Display a listing of the resource.
*
* @return \Illuminate\Http\Response
*/
public function index()
{
//
}
/**
* Show the form for creating a new resource.
*
* @return \Illuminate\Http\Response
*/
public function create()
{
//
}
/**
* Store a newly created resource in storage.
*
* @param \Illuminate\Http\Request $request
* @return \Illuminate\Http\Response
*/
public function store(Request $request)
{
//
}
/**
* 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)
{
//
}
}
#4 Membuat view
di dalam folder resources >> views buat empat views:1. create.blade.php
2. edit.blade.php
3. index.blade.php
4. layout.blade.php
kemudian buka file layout.blade.php dan masukan kode berikut:
<!-- layout.blade.php -->
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<meta http-equiv="X-UA-Compatible" content="ie=edge">
<title>Laravel 5.8 CRUD Example Tutorial</title>
<link href="{{ asset('css/app.css') }}" rel="stylesheet" type="text/css" />
</head>
<body>
<div class="container">
@yield('content')
</div>
<script src="{{ asset('js/app.js') }}" type="text/js"></script>
</body>
</html>
file ini yang akan menjadi template aplikasi kita
selanjutnya buka file create.blade.php dan tambahkan kode:
<!-- create.blade.php -->
@extends('layout')
@section('content')
<style>
.uper {
margin-top: 40px;
}
</style>
<div class="card uper">
<div class="card-header">
Add Book
</div>
<div class="card-body">
@if ($errors->any())
<div class="alert alert-danger">
<ul>
@foreach ($errors->all() as $error)
<li>{{ $error }}</li>
@endforeach
</ul>
</div><br />
@endif
<form method="post" action="{{ route('books.store') }}">
<div class="form-group">
@csrf
<label for="name">Book Name:</label>
<input type="text" class="form-control" name="book_name"/>
</div>
<div class="form-group">
<label for="price">Book ISBN Number :</label>
<input type="text" class="form-control" name="isbn_no"/>
</div>
<div class="form-group">
<label for="quantity">Book Price :</label>
<input type="text" class="form-control" name="book_price"/>
</div>
<button type="submit" class="btn btn-primary">Create Book</button>
</form>
</div>
</div>
@endsection
Ok, sekarang kita buka file BookController.php, dan pada bagian create function, kita akan me-return sebuah view ke create.blade.php
// BookController.php
public function create()
{
return view('create');
}
Simpan perubahan file dan start Laravel development server dengan perintah:
php artisan serve
buka http://localhost:8000/books/create di browser
dan kalian akan menemukan halaman berikut:
#5 Menambahkan Validation rules dan menyimpan data
Pada tahapan ini kita akan menggunakan laravel validation Langkah pertama buka BookController.php dan import Book model// BookController.php
<?php
namespace App\Http\Controllers;
use Illuminate\Http\Request;
use App\Book;
sekarang tambahkan kode berikut pada bagian store() di BookController.php
// BookController.php
public function store(Request $request)
{
$validatedData = $request->validate([
'book_name' => 'required|max:255',
'isbn_no' => 'required|alpha_num',
'book_price' => 'required|numeric',
]);
$book = Book::create($validatedData);
return redirect('/books')->with('success', 'Book is successfully saved');
}
sekarang kita lihat di browser pada halaman create jika kita submit form kosong akan mengeluarkan pesan error seperti berikut:
Sekarang jika kita mengisi form dengan benar dan kita submit akan tersimpan ke database
#6 Menampilkan data
Sekarang kita akan menulis di function index() di BookController, kita akan me-return view yang akan menampilkan data dari database// BookController.php
public function index()
{
$books = Book::all();
return view('index', compact('books'));
}
Ok, sekarang kita buka file index.blade.php dan masukan kode berikut:
<!-- index.blade.php -->
@extends('layout')
@section('content')
<style>
.uper {
margin-top: 40px;
}
</style>
<div class="uper">
@if(session()->get('success'))
<div class="alert alert-success">
{{ session()->get('success') }}
</div><br />
@endif
<table class="table table-striped">
<thead>
<tr>
<td>ID</td>
<td>Book Name</td>
<td>ISBN Number</td>
<td>Book Price</td>
<td colspan="2">Action</td>
</tr>
</thead>
<tbody>
@foreach($books as $book)
<tr>
<td>{{$book->id}}</td>
<td>{{$book->book_name}}</td>
<td>{{$book->isbn_no}}</td>
<td>{{$book->book_price}}</td>
<td><a href="{{ route('books.edit',$book->id)}}" class="btn btn-primary">Edit</a></td>
<td>
<form action="{{ route('books.destroy', $book->id)}}" method="post">
@csrf
@method('DELETE')
<button class="btn btn-danger" type="submit">Delete</button>
</form>
</td>
</tr>
@endforeach
</tbody>
</table>
<div>
@endsection
#7 Membuat Operasi Edit dan Update
Pertama kita rubah kode pada fungsi edit di BookController.php// BookController.php
public function edit($id)
{
$book = Book::findOrFail($id);
return view('edit', compact('book'));
}
lalu buka file edit.blade.php dan tambahkan kode berikut:
<!-- edit.blade.php -->
@extends('layout')
@section('content')
<style>
.uper {
margin-top: 40px;
}
</style>
<div class="card uper">
<div class="card-header">
Edit Book
</div>
<div class="card-body">
@if ($errors->any())
<div class="alert alert-danger">
<ul>
@foreach ($errors->all() as $error)
<li>{{ $error }}</li>
@endforeach
</ul>
</div><br />
@endif
<form method="post" action="{{ route('books.update', $book->id) }}">
<div class="form-group">
@csrf
@method('PATCH')
<label for="name">Book Name:</label>
<input type="text" class="form-control" name="book_name" value="{{$book->book_name}}"/>
</div>
<div class="form-group">
<label for="price">Book ISBN Number :</label>
<input type="text" class="form-control" name="isbn_no" value="{{$book->isbn_no}}"/>
</div>
<div class="form-group">
<label for="quantity">Book Price :</label>
<input type="text" class="form-control" name="book_price" value="{{$book->book_price}}"/>
</div>
<button type="submit" class="btn btn-primary">Update Book</button>
</form>
</div>
</div>
@endsection
tampilanya seperi berikut:
Sekarang tambahkan kode di bagian update() pada controller
// BookController.php
public function update(Request $request, $id)
{
$validatedData = $request->validate([
'book_name' => 'required|max:255',
'isbn_no' => 'required|alpha_num',
'book_price' => 'required|numeric',
]);
Book::whereId($id)->update($validatedData);
return redirect('/books')->with('success', 'Book is successfully updated');
}
Sekarang kamu dapat mengedit dan mengupdate data ke dalam databse
#8 Delete Function
Buka Controller dan pada function destroy tambahkan kode// BookController.php
public function destroy($id)
{
$book = Book::findOrFail($id);
$book->delete();
return redirect('/books')->with('success', 'Book is successfully deleted');
}
Sekarang coba hapus buku di browser jika muncul pesan you have successfully delete the book maka fungsi delete berhasil
kode lengkap BookController.php akan jadi seperti berikut:
<?php
// BookController.php
namespace App\Http\Controllers;
use Illuminate\Http\Request;
use App\Book;
class BookController extends Controller
{
/**
* Display a listing of the resource.
*
* @return \Illuminate\Http\Response
*/
public function index()
{
$books = Book::all();
return view('index', compact('books'));
}
/**
* Show the form for creating a new resource.
*
* @return \Illuminate\Http\Response
*/
public function create()
{
return view('create');
}
/**
* Store a newly created resource in storage.
*
* @param \Illuminate\Http\Request $request
* @return \Illuminate\Http\Response
*/
public function store(Request $request)
{
$validatedData = $request->validate([
'book_name' => 'required|max:255',
'isbn_no' => 'required|alpha_num',
'book_price' => 'required|numeric',
]);
$book = Book::create($validatedData);
return redirect('/books')->with('success', 'Book is successfully saved');
}
/**
* 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)
{
$book = Book::findOrFail($id);
return view('edit', compact('book'));
}
/**
* Update the specified resource in storage.
*
* @param \Illuminate\Http\Request $request
* @param int $id
* @return \Illuminate\Http\Response
*/
public function update(Request $request, $id)
{
$validatedData = $request->validate([
'book_name' => 'required|max:255',
'isbn_no' => 'required|alpha_num',
'book_price' => 'required|numeric',
]);
Book::whereId($id)->update($validatedData);
return redirect('/books')->with('success', 'Book is successfully updated');
}
/**
* Remove the specified resource from storage.
*
* @param int $id
* @return \Illuminate\Http\Response
*/
public function destroy($id)
{
$book = Book::findOrFail($id);
$book->delete();
return redirect('/books')->with('success', 'Book is successfully deleted');
}
}
untuk kode lengkapnya saya telah mengupload ke githubSekianlah tutorial ini, jika ada yang kurang jelas silakan ditanyakan pada komentar di bawah, jika artikel ini bermanfaat silakan di share, Terimakasih
0 komentar :