Cara Membuat CRUD Laravel 8 Untuk Pemula



Apa kabar teman-teman, semoga sehat selalu..., masih bersama kami dengan berbagai tutorial untuk belajar dan menambah pengetahuan. Pada artikel kali ini kita akan membahas tentang Cara Membuat CRUD Laravel 8 Untuk Pemula, Tidak asing lagi kan dengan framework yang satu ini,..
cuss tetap ikuti langkahnya sampai selesai ya....

Pengenalan Laravel 8

Taylor Otwell baru saja merilis Laravel 8 pada tanggal 8 September 2020

Pada versi terbaru ini, laravel 8 memberikan beberapa fitur baru dan dukungan LTS yang keren yang perlu kita ketahui.
Disini teman-teman hanya perlu mengikuti beberapa langkah dasar menggunakan controller, model, route, bootstrap 4 dan blade.

Step #1 - Instal Laravel 8

Ada 2 cara yang dapat dilakukan untuk menginstal laravel 8, pertama dengan Laravel Installer dan yang kedua dengan composer.

Cara 1 : Menggunakan Laravel Installer

Silahkan ketik command di bawah ini untuk menginstal Laravel terlebih dahulu:

composer global require laravel/installer

Kemudian buat project baru dengan ketik command berikut ini :

laravel new laravel8_crud


Cara 2 : Menggunakan Composer

Ini adalah cara termudah yang biasa kita lakukan, cukup dengan ketik perintah berikut ini :

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

Silahkan enter dan tunggu proses sampai selesai.

Step #2 - Konfigurasi Database

Step kedua ini yaitu membuat dan mengatur database, silahkan aktifkan web server yang kamu gunakan semisal XAMMP, Laragon, MAMP, Nginx dan lain - lain. Kemudian buat database baru bernama db_laravel8_crud , setelah itu buka file .env yang ada di dalam direktori blog/.env.

Ubah nama databse, root, password dll yang sesuai dengan web server teman-teman.

Tips 1 : Konfigurasi Database di XAMPP (Windows/Linux) dan Laragon (Windows)

DB_CONNECTION=mysql
DB_HOST=127.0.0.1
DB_PORT=3306
DB_DATABASE=db_laravel8_crud
DB_USERNAME=root
DB_PASSWORD=
Tips 2 : Konfigurasi Database di MAMP (MAC Os)

DB_CONNECTION=mysql
DB_HOST=127.0.0.1
DB_PORT=8889
DB_DATABASE=db_laravel8_crud
DB_USERNAME=root
DB_PASSWORD=root

Step #3 - Membuat Migration dan Model

Pada tahap studi kasus kali ini kita akan menggunakan table post sebagai contoh. Maka itu kita perlu membuat table sekaligus model-nya terlebih dahulu.

Silahkan ketik command di bawah ini:

php artisan make:model Post --migration

Kemudian buka folder migrations yang ada di direktori laravel8_crud/database/migrations, lalu modifikasi skema field table posts dengan kode di bawah ini:

<?php
 
use Illuminate\Database\Migrations\Migration;
use Illuminate\Database\Schema\Blueprint;
use Illuminate\Support\Facades\Schema;
 
class CreatePostsTable extends Migration
{
    /**
     * Run the migrations.
     *
     * @return void
     */
    public function up()
    {
        Schema::create('posts', function (Blueprint $table) {
            $table->id();
            $table->string('title');
            $table->text('content');
            $table->timestamps();
        });
    }
 
    /**
     * Reverse the migrations.
     *
     * @return void
     */
    public function down()
    {
        Schema::dropIfExists('posts');
    }
}
Apakah sudah selesai merubah kodenya teman-teman?

Jika sudah kita lanjutkan untuk menjalankan perintah di bawah ini agar field yang kita buat tadi ter-migrasi ke database:

php artisan migrate

Silahkan tunggu prosesnya sampai selesai.

Step #4 - Membuat Resource Controller

Pada tahap ini kita akan membuat controller untuk mengatur jalanya file, silahkan ketik di command di bawah ini untuk membuat resource controller :

php artisan make:controller PostController --resource

Jika berhasil maka akan terdapat file PostController.php di dalam direktori app/Http/Controller, di dalam PostController.php sudah tersedia beberapa function, yaitu:

  • index()
  • create()
  • store()
  • show()
  • edit()
  • destroy()

Sekarang kita modifikasi isi file tersebut seperti kode berikut:

<?php
 
namespace App\Http\Controllers;
 
use Illuminate\Http\Request;
use App\Models\Post;
 
class PostController extends Controller
{
    public function index()
    {
        $posts = Post::latest()->paginate(5);
 
        return view('posts.index',compact('posts'))
            ->with('i', (request()->input('page', 1) - 1) * 5);
    }
 
    public function create()
    {
        return view('posts.create');
    }
 
    public function store(Request $request)
    {
        $request->validate([
            'title' => 'required',
            'content' => 'required',
        ]);
 
        Post::create($request->all());
 
        return redirect()->route('posts.index')
                        ->with('success','Post created successfully.');
    }
 
    public function show(Post $post)
    {
        return view('posts.show',compact('post'));
    }
 
    public function edit(Post $post)
    {
        return view('posts.edit',compact('post'));
    }
 
    public function update(Request $request, Post $post)
    {
        $request->validate([
            'title' => 'required',
            'content' => 'required',
        ]);
 
        $post->update($request->all());
 
        return redirect()->route('posts.index')
                        ->with('success','Post updated successfully');
    }
 
    public function destroy(Post $post)
    {
        $post->delete();
 
        return redirect()->route('posts.index')
                        ->with('success','Post deleted successfully');
    }
}
Jangan lupa untuk Save.

Step #5 - Modifikasi Model

Silahkan buka file app/Model/Post.php dan tambahkan fillable berikut:

<?php
 
namespace App\Models;
 
use Illuminate\Database\Eloquent\Factories\HasFactory;
use Illuminate\Database\Eloquent\Model;
 
class Post extends Model
{
    use HasFactory;
 
    protected $fillable = [
        'title', 'content'
    ];
}


Step #6 - Menambahkan Route

Sekarang kita tambahkan route untuk mengakses resource controller post, buka route/web.php dan tambahkan kode berikut:

use App\Http\Controllers\PostController;
Route::resource('posts', PostController::class);
Simpan.

Step #7 - Membuat Halaman View

Pada step terakhir ini, kita akan membuat beberapa file view menggunakan bootstrap.
Adapun halaman view yang akan kita buat adalah sebagai berikut:
  • template.blade.php
  • index,blade.php
  • create.blade.php
  • show.blade.php
  • edit.blade.php
Mari kita langsung eksekusi,.. semangat ya...

Silahkan membuat file baru dengan nama template.blade.php di direktori resources/views

Kemudian ketik kdoe berikut ini

<!DOCTYPE html>
<html>
<head>
    <title>Tutorial CRUD Laravel 8 untuk Pemula - Ilmucoding.com</title>
</head>
<body>
 
<div class="container">
    @yield('content')
</div>
 
</body>
</html>
Kemudian buat folder baru di dalam views bernama posts, dan buat 4 file index.blade.php, create.blade.php, show.blade.php, dan edit.blade.php seperti di bawah ini:

index.blade.php

@extends('template')
 
@section('content')
    <div class="row mt-5 mb-5">
        <div class="col-lg-12 margin-tb">
            <div class="float-left">
                <h2>Tutorial CRUD Laravel 8 untuk Pemula - Ilmucoding.com</h2>
            </div>
            <div class="float-right">
                <a class="btn btn-success" href="{{ route('posts.create') }}"> Create Post</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 width="20px" class="text-center">No</th>
            <th>Title</th>
            <th width="280px"class="text-center">Action</th>
        </tr>
        @foreach ($posts as $post)
        <tr>
            <td class="text-center">{{ ++$i }}</td>
            <td>{{ $post->title }}</td>
            <td class="text-center">
                <form action="{{ route('posts.destroy',$post->id) }}" method="POST">
 
                    <a class="btn btn-info btn-sm" href="{{ route('posts.show',$post->id) }}">Show</a>
 
                    <a class="btn btn-primary btn-sm" href="{{ route('posts.edit',$post->id) }}">Edit</a>
 
                    @csrf
                    @method('DELETE')
 
                    <button type="submit" class="btn btn-danger btn-sm" onclick="return confirm('Apakah Anda yakin ingin menghapus data ini?')">Delete</button>
                </form>
            </td>
        </tr>
        @endforeach
    </table>
 
    {!! $posts->links() !!}
 
@endsection
create.blade.php

@extends('template')
 
@section('content')
<div class="row mt-5 mb-5">
    <div class="col-lg-12 margin-tb">
        <div class="float-left">
            <h2>Create New Post</h2>
        </div>
        <div class="float-right">
            <a class="btn btn-secondary" href="{{ route('posts.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('posts.store') }}" method="POST">
    @csrf
 
     <div class="row">
        <div class="col-xs-12 col-sm-12 col-md-12">
            <div class="form-group">
                <strong>Title:</strong>
                <input type="text" name="title" class="form-control" placeholder="Title">
            </div>
        </div>
        <div class="col-xs-12 col-sm-12 col-md-12">
            <div class="form-group">
                <strong>Content:</strong>
                <textarea class="form-control" style="height:150px" name="content" placeholder="Content"></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
show.blade.php

@extends('template')
 
@section('content')
    <div class="row mt-5 mb-5">
        <div class="col-lg-12 margin-tb">
            <div class="float-left">
                <h2> Show Post</h2>
            </div>
            <div class="float-right">
                <a class="btn btn-secondary" href="{{ route('posts.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>Title:</strong>
                {{ $post->title }}
            </div>
        </div>
        <div class="col-xs-12 col-sm-12 col-md-12">
            <div class="form-group">
                <strong>Content:</strong>
                {{ $post->content }}
            </div>
        </div>
    </div>
@endsection
edit.blade.php

@extends('template')
 
@section('content')
    <div class="row mt-5 mb-5">
        <div class="col-lg-12 margin-tb">
            <div class="float-left">
                <h2>Edit Post</h2>
            </div>
            <div class="float-right">
                <a class="btn btn-secondary" href="{{ route('posts.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('posts.update',$post->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>Title:</strong>
                    <input type="text" name="title" value="{{ $post->title }}" class="form-control" placeholder="Title">
                </div>
            </div>
            <div class="col-xs-12 col-sm-12 col-md-12">
                <div class="form-group">
                    <strong>Content:</strong>
                    <textarea class="form-control" style="height:150px" name="content" placeholder="Content">{{ $post->content }}</textarea>
                </div>
            </div>
            <div class="col-xs-12 col-sm-12 col-md-12 text-center">
              <button type="submit" class="btn btn-primary">Update</button>
            </div>
        </div>
 
    </form>
@endsection

Step #8 - Testing Program

Masih sama dengan laravel versi sebelumnya, untuk menjalankan aplikasi kita harus menjalankan perintah di bawah ini di command:

php artisan serve

Kemudian buka di browser teman-teman dan ketik URL berikut:

http://127.0.0.1.8000/posts

Jika berhasil maka akan tampil halaman seperti ini:




Klik tombol Create Post, maka akan muncul halaman seperti di bawah ini


Silahkan teman-teman isi dengan judul dan content yang diinginkan, jika sudah, Klik tombol Submit. Dan untuk menampilkan Detail post bisa teman-teman klik tombol Show pada halaman index,
Hasilnya seperti di bawah ini


Terakhir, ini halaman edit:


Sekian tutorial dari kami tentang CRUD sederhana menggunakan Laravel 8 pada saat ini semoga bermanfaat bagi teman-teman dan tetap semangat terus untuk berlatih. Terima Kasih

Post a Comment

Previous Post Next Post