Anda di halaman 1dari 19

Tutorial CRUD Laravel 8 untuk Pemula

31 October 2020 6 min read

Loading...

Tutorial CRUD Laravel 8 untuk Pemula. Seperti pada umumnya, untuk mempelajari hal
baru dari Laravel 8 selalu dimulai dari mempelajari tutorial Create, Read, Update dan Delete
(CRUD).

Melalui artikel ini, kamu akan belajar step by step membuat CRUD Laravel 8 yang simple
dan mudah dipahami.

Selain itu, kamu juga bisa download source code yang tersedia di akhir artikel ini.

Oke, langsung saja kita mulai cara membuat CRUD Laravel 8.

Let’s Go!

Daftar Isi

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. Selengkapnya bisa kamu baca melalui artikel di bawah ini:

Loading...

Baca Juga: Fitur dan Ulasan Laravel 8 yang Wajib Kamu Tahu

Sudah membacanya?

Kalau sudah pasti kamu sudah nggak sabar bagaimana membuat aplikasi dasar seperti insert,
update dan delete di Laravel 8.

Nggak sulit!

… di sini kamu hanya perlu mengikuti beberapa langkah dasar menggunakan controller,
model, route, bootstrap 4 dan blade.

Step #1 – Install Laravel 8


Ada 2 cara yang dapat dilakukan untuk menginstall Laravel 8. Pertama dengan Laravel
Installer dan yang kedua dengan composer.

Cara 1: Menggunakan Laravel Installer

Loading...

Silahkan ketik command di bawah ini untuk menginstall 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

Baca Juga:

 Tutorial Cara Install Laravel 6


 Tutorial Install Laravel 7 Menggunakan Composer

Kemudian tunggu sampai installasi selesai.

Step #2 – Konfigurasi Database


Step kedua yaitu dengan mengatur database.

Loading...

Silahkan aktifkan web server yang kamu gunakan semisal XAMPP, 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 database, root, password dll yang sesuai dengan web server kamu lakukan.

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

?
1DB_CONNECTION=mysql
2DB_HOST=127.0.0.1
3DB_PORT=3306
4DB_DATABASE=db_laravel8_crud
5DB_USERNAME=root
DB_PASSWORD=
6

Tips 2: Konfigurasi Database di MAMP (MAC Os)

?
1DB_CONNECTION=mysql
2DB_HOST=127.0.0.1
3DB_PORT=8889
4DB_DATABASE=db_laravel8_crud
5DB_USERNAME=root
DB_PASSWORD=root
6

Save.

Loading...

Step #3 – Membuat Migration dan Model


Pada studi kasus kita kali ini akan menggunakan table posts sebagai contoh. Maka dari 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:
?
1 <?php
2  
use Illuminate\Database\Migrations\Migration;
3
use Illuminate\Database\Schema\Blueprint;
4 use Illuminate\Support\Facades\Schema;
5  
6 class CreatePostsTable extends Migration
7 {
8     /**
     * Run the migrations.
9      *
1      * @return void
0      */
1     public function up()
1     {
        Schema::create('posts', function (Blueprint $table) {
1             $table->id();
2             $table->string('title');
1             $table->text('content');
3             $table->timestamps();
        });
1     }
4
 
1     /**
5      * Reverse the migrations.
1      *
6      * @return void
     */
1     public function down()
7     {
1         Schema::dropIfExists('posts');
8     }
1 }
9
2
0
2
1
2
2
2
3
2
4
2
5
2
6
2
7
2
8
2
9
3
0
3
1
3
2
3
3

Sudah selesai mengubah kodenya?

Jika sudah kita jalankan command di bawah ini agar field yang kita buat akan ter-migrasi ke
database:

php artisan migrate

Step #4 – Membuat Resource Controller


Pada tahap ini kita akan membuat controller di Laravel 8.

Loading...
Loading...

Silahkan ketik 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/Controllers.

… di dalam PostController.php sudah tersedia beberapa function, yaitu:

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

Sekarang kita modifikasi isi file tersebut seperti kode di bawah ini:

?
1 <?php
2  
namespace App\Http\Controllers;
3
4  
use Illuminate\Http\Request;
5 use App\Models\Post;
6   
7 class PostController extends Controller
8 {
9     public function index()
    {
1
        /// mengambil data terakhir dan pagination 5 list
0         $posts = Post::latest()->paginate(5);
1          
1         /// mengirimkan variabel $posts ke halaman views
1 posts/index.blade.php
2         /// include dengan number index
        return view('posts.index',compact('posts'))
1             ->with('i', (request()->input('page', 1) - 1) * 5);
3     }
1   
4     public function create()
1     {
5         /// menampilkan halaman create
        return view('posts.create');
1     }
6   
1     public function store(Request $request)
7     {
1         /// membuat validasi untuk title dan content wajib diisi
8         $request->validate([
            'title' => 'required',
1             'content' => 'required',
9         ]);
2          
0         /// insert setiap request dari form ke dalam database via model
2         /// jika menggunakan metode ini, maka nama field dan nama form
1 harus sama
        Post::create($request->all());
2
         
2         /// redirect jika sukses menyimpan data
2         return redirect()->route('posts.index')
3                         ->with('success','Post created successfully.');
2     }
4   
2     public function show(Post $post)
    {
5         /// dengan menggunakan resource, kita bisa memanfaatkan model
2 sebagai parameter
6         /// berdasarkan id yang dipilih
2         /// href="{{ route('posts.show',$post->id) }}
        return view('posts.show',compact('post'));
7     }
2   
8     public function edit(Post $post)
2     {
9         /// dengan menggunakan resource, kita bisa memanfaatkan model
3 sebagai parameter
        /// berdasarkan id yang dipilih
0         /// href="{{ route('posts.edit',$post->id) }}
3         return view('posts.edit',compact('post'));
1     }
3   
2     public function update(Request $request, Post $post)
3     {
        /// membuat validasi untuk title dan content wajib diisi
3         $request->validate([
3             'title' => 'required',
4             'content' => 'required',
        ]);
3
5          
        /// mengubah data berdasarkan request dan parameter yang
3 dikirimkan
6         $post->update($request->all());
3          
7         /// setelah berhasil mengubah data
3         return redirect()->route('posts.index')
                        ->with('success','Post updated successfully');
8     }
3
  
9     public function destroy(Post $post)
4     {
0         /// melakukan hapus data berdasarkan parameter yang dikirimkan
4         $post->delete();
1   
        return redirect()->route('posts.index')
4                         ->with('success','Post deleted successfully');
2     }
4 }
3
4
4
4
5
4
6
4
7
4
8
4
9
5
0
5
1
5
2
5
3
5
4
5
5
5
6
5
7
5
8
5
9
6
0
6
1
6
2
6
3
6
4
6
5
6
6
6
7
6
8
6
9
7
0
7
1
7
2
7
3
7
4
7
5
7
6
7
7
7
8
7
9
8
0
8
1
8
2
8
3
8
4

Save.

Step #5 – Modifikasi Model


Silahkan buka file app/Models/Post.php dan tambahkan fillable.

?
1
2
3
4
5 <?php
6  
namespace App\Models;
7
8  
use Illuminate\Database\Eloquent\Factories\HasFactory;
9 use Illuminate\Database\Eloquent\Model;
1  
0 class Post extends Model
1 {
1     use HasFactory;
1  
    protected $fillable = [
2         'title', 'content'
1     ];
3 }
1
4
1
5

Step #6 – Menambahkan Route


Sakarang kita tambahkan route untuk mengakses resource controller Post.

Loading...

Buka routes/web.php dan tambahkan:

?
1use App\Http\Controllers\PostController;
2Route::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:

 template.blade.php
 index.blade.php
 create.blade.php
 show.blade.php
 edit.blade.php

Let’s go!

Silahkan buat file baru bernama template.blade.php di direktori resources/views.

Kemudian ketik kode berikut ini:

Loading...
?
1
2
3
<!DOCTYPE html>
4 <html>
5 <head>
6     <title>Tutorial CRUD Laravel 8 untuk Pemula - Ilmucoding.com</title>
7     <link rel="stylesheet"
8 href="https://maxcdn.bootstrapcdn.com/bootstrap/4.0.0/css/bootstrap.min.c
ss">
9 </head>
1 <body>
0  
1 <div class="container">
1     @yield('content')
1 </div>
2  </body>
1 </html>
3
1
4

Kemudian buat folder baru di dalam views bernama posts.

1# posts/index.blade.php

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

2# posts/create.blade.php

?
1 @extends('template')
2  
@section('content')
3
<div class="row mt-5 mb-5">
4     <div class="col-lg-12 margin-tb">
5         <div class="float-left">
6             <h2>Create New Post</h2>
7         </div>
        <div class="float-right">
8             <a class="btn btn-secondary"
9 href="{{ route('posts.index') }}"> Back</a>
1         </div>
0     </div>
1 </div>
1  
@if ($errors->any())
1     <div class="alert alert-danger">
2         <strong>Whoops!</strong> There were some problems with your
input.<br><br>
1
        <ul>
3             @foreach ($errors->all() as $error)
1                 <li>{{ $error }}</li>
4             @endforeach
1         </ul>
    </div>
5 @endif
1  
6 <form action="{{ route('posts.store') }}" method="POST">
1     @csrf
7  
1      <div class="row">
8         <div class="col-xs-12 col-sm-12 col-md-12">
            <div class="form-group">
1                 <strong>Title:</strong>
9                 <input type="text" name="title" class="form-control"
2 placeholder="Title">
0             </div>
        </div>
2         <div class="col-xs-12 col-sm-12 col-md-12">
1             <div class="form-group">
2                 <strong>Content:</strong>
2                 <textarea class="form-control" style="height:150px"
2 name="content" placeholder="Content"></textarea>
            </div>
3         </div>
2         <div class="col-xs-12 col-sm-12 col-md-12 text-center">
4             <button type="submit" class="btn btn-primary">Submit</button>
2         </div>
5     </div>
2  
</form>
6 @endsection
2
7
2
8
2
9
3
0
3
1
3
2
3
3
3
4
3
5
3
6
3
7
3
8
3
9
4
0
4
1
4
2
4
3
4
4
4
5
4
6
4
7
4
8

3# posts/show.blade.php

?
1 @extends('template')
2  
@section('content')
3
    <div class="row mt-5 mb-5">
4         <div class="col-lg-12 margin-tb">
5             <div class="float-left">
6                 <h2> Show Post</h2>
7             </div>
            <div class="float-right">
8                 <a class="btn btn-secondary"
9 href="{{ route('posts.index') }}"> Back</a>
1             </div>
0         </div>
1     </div>
1  
    <div class="row">
1         <div class="col-xs-12 col-sm-12 col-md-12">
2             <div class="form-group">
1                 <strong>Title:</strong>
3                 {{ $post->title }}
            </div>
1         </div>
4         <div class="col-xs-12 col-sm-12 col-md-12">
1             <div class="form-group">
5                 <strong>Content:</strong>
1                 {{ $post->content }}
            </div>
6         </div>
1
7
1
8
1
9
2
0
2
1
2
2
2     </div>
3 @endsection
2
4
2
5
2
6
2
7
2
8
2
9

4# posts/edit.blade.php

?
1 @extends('template')
2  
@section('content')
3
    <div class="row mt-5 mb-5">
4         <div class="col-lg-12 margin-tb">
5             <div class="float-left">
6                 <h2>Edit Post</h2>
7             </div>
            <div class="float-right">
8                 <a class="btn btn-secondary" href="{{ route('posts.index')
9 }}"> Back</a>
1             </div>
0         </div>
1     </div>
1  
    @if ($errors->any())
1         <div class="alert alert-danger">
2             <strong>Whoops!</strong> There were some problems with your
1 input.<br><br>
3             <ul>
                @foreach ($errors->all() as $error)
1                     <li>{{ $error }}</li>
4                 @endforeach
1             </ul>
5         </div>
    @endif
1
6  
    <form action="{{ route('posts.update',$post->id) }}" method="POST">
1         @csrf
7         @method('PUT')
1  
8          <div class="row">
1             <div class="col-xs-12 col-sm-12 col-md-12">
                <div class="form-group">
9                     <strong>Title:</strong>
2                     <input type="text" name="title" value="{{ $post->title
0 }}" class="form-control" placeholder="Title">
2                 </div>
1             </div>
            <div class="col-xs-12 col-sm-12 col-md-12">
2                 <div class="form-group">
2                     <strong>Content:</strong>
2                     <textarea class="form-control" style="height:150px"
3 name="content" placeholder="Content">{{ $post->content }}</textarea>
                </div>
2             </div>
4             <div class="col-xs-12 col-sm-12 col-md-12 text-center">
2               <button type="submit" class="btn btn-
5 primary">Update</button>
2             </div>
        </div>
6
 
2     </form>
7 @endsection
2
8
2
9
3
0
3
1
3
2
3
3
3
4
3
5
3
6
3
7
3
8
3
9
4
0
4
1
4
2
4
3
4
4
4
5
4
6
4
7
4
8
4
9

Step 8# – Testing Program


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

php artisan serve

Kemudian buka browser dan ketik URL berikut:

Loading...
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 isi dengan judul dan content. Jika sudah, klik tombol Submit.

… dan untuk tampilan Detail, bisa klik tombol Show pada halaman index.

Hasilnya:

Terakhir, ini halaman edit:

Penutup
Alhamdulillah, telah selesai tutorial CRUD sederhana menggunakan Laravel 8 pada saat ini.

Loading...

Kita telah banyak belajar tentang pengembangan Laravel 8, hal baru pada route, membuat
model dan migration, membuat controller dan membuat view dan lain-lain.

Anda mungkin juga menyukai