Tutorial Membuat CRUD Laravel 6

Buat kalian yang belum tau CRUD itu apa, CRUD merupakan sebuah fungsi sederhana yang terdiri atas create, update dan delete atau secara umum untuk melakukan manajemen data yaitu terdapat proses insert data, update data dan hapus data. Pada tulisan kali ini kita akan membahas tentang tutorial membuat CRUD dengan Laravel 6. Melalui tulisan ini diharapkan kalian dapat memahami bagaimana cara menggunakan resource route, controller, blade untuk view, penggunaan dan pembuatan model sampai dengan migration pada Laravel 6. Selanjutnya kita mulai tulisan tutorial membuat CRUD pada Laravel 6.

Laravel 6 memberikan beberapa fitur baru dan LTS support, buat kalian yang baru ingin belajar Laravel 6 tulisan ini juga dapat kalian gunakan sebagai referensi melalui kasus tutorial membuat CRUD pada Laravel 6.

Mari kita mulai langkah demi langkah membuat CRUD pada Laravel 6.



1. Install Laravel 6

Langkah pertama adalah download Laravel 6, untuk mengunduh Laravel 6 silahkan buka terminal atau command prompt lalu eksekusi perintah dibawah ini:

composer create-project --prefer-dist laravel/laravel blog "6.*"

2. Konfigurasi Database

Pada bagian ini kita harus merubah setting database pada file .env untuk beberapa parameter seperti database hostname, database name, user untuk akses ke database beserta passwordnya. Untuk merubahnya silahkan kalian buka file .env menggunakan code editor lalu rubah beberapa baris dibawah ini.

.env
DB_CONNECTION=mysql
DB_HOST=127.0.0.1
DB_PORT=3306
DB_DATABASE=store
DB_USERNAME=root
DB_PASSWORD=root
Baca Juga:

3. Membuat Migrasi

Proses migrasi pada Laravel merupakan proses dimana kita membuat schema database menggunakan file migration yang lalu akan dieksekusi agar otomatis membuat table dengan schema yang ada didalam file migration. Hal ini sangat berguna jika kalian bekerja dalam tim jadi tidak perlu mengirimkan file sql namun cukup dengan mengeksekusi perintah migrasi pada Laravel.

php artisan make:migration create_tabel_produk --create=produk
Setelah mengeksekusi perintah diatas maka otomatis pada folder "database/migration" akan muncul file baru yang memiliki nama ada kata create_tabel_produk.

<?php

use Illuminate\Database\Migrations\Migration;
use Illuminate\Database\Schema\Blueprint;
use Illuminate\Support\Facades\Schema;

class CreateTabelProduk extends Migration
{
    /**
     * Run the migrations.
     *
     * @return void
     */
    public function up()
    {
        Schema::create('produk', function (Blueprint $table) {
            $table->increments('id');
            $table->string('name');
            $table->text('detail');
            $table->timestamps();
        });
    }

    /**
     * Reverse the migrations.
     *
     * @return void
     */
    public function down()
    {
        Schema::dropIfExists('produk');
    }
}

Setelah selesai mengedit file diatas maka kalian bisa mengeksekusi perintah migration pada Laravel 6

php artisan migrate

4. Membuat Resource Route

Kita perlu membuat sebuah resource route agar module produk CRUD kita bisa diakses, buka file "routes/web.php" lalu ketikan code dibawah ini.

routes/web.php
Route::resource('produk','ProdukController');

5. Controller dan Model

Pada bagian ini kita harus membuat controller baru dengan nama ProdukController, untuk membuatnya kalian bisa mengeksekusi perintah dibawah ini untuk membuat controller tersebut.

php artisan make:controller ProdukController --resource --model=Produk
Setelah perintah diatas dieksekusi maka akan muncul controller baru pada folder "app/Http/Controllers/ProdukController.php".

Secara default akan muncul pada class controller tersebut terdapat beberapa default function yaitu
- index()
- create()
- store()
- show()
- edit()
- update()
- destroy()

Selanjutnya kalian ganti semua isi pada file ProdukControler.php dengan code dibawah ini

app/Http/Controllers/ProdukController.php
<?php

  
namespace App\Http\Controllers;
  
use App\Produk;
use Illuminate\Http\Request;
  
class ProdukController extends Controller
{
    public function index()
    {
        $produk = Produk::latest()->paginate(5);
  
        return view('produk.index',compact('produk'))
            ->with('i', (request()->input('page', 1) - 1) * 5);
    }

    public function create()
    {
        return view('produk.create');
    }
  
    public function store(Request $request)
    {
        $request->validate([
            'name' => 'required',
            'detail' => 'required',
        ]);
  
        Produk::create($request->all());
   
        return redirect()->route('produk.index')
                        ->with('success','Product created successfully.');
    }
   
    public function show(Produk $produk)
    {
        return view('produk.show',compact('produk'));
    }
   
    public function edit(Produk $produk)
    {
        return view('produk.edit',compact('produk'));
    }
  
    public function update(Request $request, Produk $produk)
    {
        $request->validate([
            'name' => 'required',
            'detail' => 'required',
        ]);
  
        $produk->update($request->all());
  
        return redirect()->route('produk.index')
                        ->with('success','Produk updated successfully');
    }
  
    public function destroy(Produk $produk)
    {
        $produk->delete();
  
        return redirect()->route('produk.index')
                        ->with('success','Produk deleted successfully');
    }
}
Setelah membuat ProdukController, kita harus merubah file pada "app/Produk.php" dengan code dibawah ini

app/Produk.php
<?php

namespace App;
  
use Illuminate\Database\Eloquent\Model;
   
class Produk extends Model
{
    protected $fillable = [
        'name', 'detail'
    ];

    protected $table = 'produk';
}

6. Blade untuk view

Pada langkah terakhir kita perlu membuat beberapa blade file. Pertama kita akan membuat layout file lalu membuat folder dengan nama "produk" lalu membuat beberapa file pada folder tersebut untuk mengakomodir CRUD app kita. Beberapa blade file yang akan kita buat adalah:

1. layout.blade.php
2. index.blade.php
3. create.blade.php
4. edit.blade.php
5. show.blade.php

Mari kita lihat satu persatu isi file diatas.

resources/views/product/layout.blade.php
<!DOCTYPE html>
<html>
<head>
    <title>Laravel 6 CRUD Application - solusiprogramming.blogspot.com</title>
    <link href="https://cdnjs.cloudflare.com/ajax/libs/twitter-bootstrap/4.0.0-alpha/css/bootstrap.css" rel="stylesheet">
</head>
<body>
  
<div class="container">
    @yield('content')
</div>
   
</body>
</html>


resources/views/product/index.blade.php
@extends('produk.layout')
 
@section('content')
    <div class="row">
        <div class="col-lg-12 margin-tb">
            <div class="pull-left">
                <h2>Laravel 6 CRUD Example from scratch - solusiprogramming.blogspot.com</h2>
            </div>
            <div class="pull-right">
                <a class="btn btn-success" href="{{ route('produk.create') }}"> Create New Product</a>
            </div>
        </div>
    </div>
   
    @if ($message = Session::get('success'))
        <div class="alert alert-success">
            <p>{{ $message }}</p>
        </div>
    @endif
   
    <table class="table table-bordered">
        <tr>
            <th>No</th>
            <th>Name</th>
            <th>Details</th>
            <th width="280px">Action</th>
        </tr>
        @foreach ($produk as $item)
        <tr>
            <td>{{ ++$i }}</td>
            <td>{{ $item->name }}</td>
            <td>{{ $item->detail }}</td>
            <td>
                <form action="{{ route('produk.destroy',$item->id) }}" method="POST">
   
                    <a class="btn btn-info" href="{{ route('produk.show',$item->id) }}">Show</a>
    
                    <a class="btn btn-primary" href="{{ route('produk.edit',$item->id) }}">Edit</a>
   
                    @csrf
                    @method('DELETE')
      
                    <button type="submit" class="btn btn-danger">Delete</button>
                </form>
            </td>
        </tr>
        @endforeach
    </table>
  
    {!! $produk->links() !!}
      
@endsection


resources/views/product/create.blade.php
@extends('produk.layout')
  
@section('content')
<div class="row">
    <div class="col-lg-12 margin-tb">
        <div class="pull-left">
            <h2>Add New Product</h2>
        </div>
        <div class="pull-right">
            <a class="btn btn-primary" href="{{ route('produk.index') }}"> Back</a>
        </div>
    </div>
</div>
   
@if ($errors->any())
    <div class="alert alert-danger">
        <strong>Whoops!</strong> There were some problems with your input.<br><br>
        <ul>
            @foreach ($errors->all() as $error)
                <li>{{ $error }}</li>
            @endforeach
        </ul>
    </div>
@endif
   
<form action="{{ route('produk.store') }}" method="POST">
    @csrf
  
     <div class="row">
        <div class="col-xs-12 col-sm-12 col-md-12">
            <div class="form-group">
                <strong>Name:</strong>
                <input type="text" name="name" class="form-control" placeholder="Name">
            </div>
        </div>
        <div class="col-xs-12 col-sm-12 col-md-12">
            <div class="form-group">
                <strong>Detail:</strong>
                <textarea class="form-control" style="height:150px" name="detail" placeholder="Detail"></textarea>
            </div>
        </div>
        <div class="col-xs-12 col-sm-12 col-md-12 text-center">
                <button type="submit" class="btn btn-primary">Submit</button>
        </div>
    </div>
   
</form>
@endsection


resources/views/product/edit.blade.php
@extends('produk.layout')
   
@section('content')
    <div class="row">
        <div class="col-lg-12 margin-tb">
            <div class="pull-left">
                <h2>Edit Product</h2>
            </div>
            <div class="pull-right">
                <a class="btn btn-primary" href="{{ route('produk.index') }}"> Back</a>
            </div>
        </div>
    </div>
   
    @if ($errors->any())
        <div class="alert alert-danger">
            <strong>Whoops!</strong> There were some problems with your input.<br><br>
            <ul>
                @foreach ($errors->all() as $error)
                    <li>{{ $error }}</li>
                @endforeach
            </ul>
        </div>
    @endif
  
    <form action="{{ route('produk.update',$produk->id) }}" method="POST">
        @csrf
        @method('PUT')
   
         <div class="row">
            <div class="col-xs-12 col-sm-12 col-md-12">
                <div class="form-group">
                    <strong>Name:</strong>
                    <input type="text" name="name" value="{{ $produk->name }}" class="form-control" placeholder="Name">
                </div>
            </div>
            <div class="col-xs-12 col-sm-12 col-md-12">
                <div class="form-group">
                    <strong>Detail:</strong>
                    <textarea class="form-control" style="height:150px" name="detail" placeholder="Detail">{{ $produk->detail }}</textarea>
                </div>
            </div>
            <div class="col-xs-12 col-sm-12 col-md-12 text-center">
              <button type="submit" class="btn btn-primary">Submit</button>
            </div>
        </div>
   
    </form>
@endsection


resources/views/product/show.blade.php
@extends('produk.layout')
@section('content')
    <div class="row">
        <div class="col-lg-12 margin-tb">
            <div class="pull-left">
                <h2> Show Product</h2>
            </div>
            <div class="pull-right">
                <a class="btn btn-primary" href="{{ route('produk.index') }}"> Back</a>
            </div>
        </div>
    </div>
   
    <div class="row">
        <div class="col-xs-12 col-sm-12 col-md-12">
            <div class="form-group">
                <strong>Name:</strong>
                {{ $produk->name }}
            </div>
        </div>
        <div class="col-xs-12 col-sm-12 col-md-12">
            <div class="form-group">
                <strong>Details:</strong>
                {{ $produk->detail }}
            </div>
        </div>
    </div>
@endsection


Jika semua file blade telah kalian rubah, mari kita jalankan perintah php artisan serve untuk menjalankan aplikasi CRUD yang telah kita buat tadi.

php artisan serve
Jika tidak ada kesalahan / error maka kalian bisa membuka menggunakan browser alamat dibawah ini

http://localhost:8000/produk
Gimana mudah bukan tutorial membuat CRUD pada Laravel 6, jangan lupa di share ke temen temen kalian ya.

Untuk repository atau download bisa melalui link ini ya Download Tutorial CRUD Laravel 6

Jika kalian ada pertanyaan seputar tutorial ini jangan sungkan bertanya melalui kolom komentar ya, dan jangan lupa share ke social media kalian ya

Previous Post Next Post