Skip to content Skip to sidebar Skip to footer

Widget Atas Posting

Tutorial CRUD Laravel 8 Simple dan Mudah Untuk Pemula

Laravel 8 di rilis oleh Taylor Otwell pada tanggal 8 September 2020 kemarin.  Pada versi terbaru laravel 8 memberikan fitur-fitur terbaru. 

Bila kita menemukan framework baru atau bahasa pemrograman baru yang berhubungan dengan database pastinya sering kali kita mulai dari tutorial CRUD (Create, Read, Update dan Delete). Pada kesempatan kali ini kita akan membahas dan mempelajari step by step tentang tutorial cara membuat CRUD di Laravel 8.

Tutorial CRUD Laravel 8

Seperti biasa langkah pertama adalah dimulai dengan installasi dulu. Jika belum tahu cara installasi laravel 8 silahkan klik artikel dibawah ini :

Cara Installasi Laravel 8

Membuat Database

Langkah selanjutnya adalah membuat database. Kali ini admin menggunakan database MySQL dan membuat database dengan nama crud laravel.

Baca Juga : Cara Membuat Database di MySQL

Membuat Koneksi Database

Setelah database terbuat saatnya kita membuat koneksi database MySQL dengan laravel. buka file .env kemudian cari baris kode berikut ini :

DB_CONNECTION=mysql
DB_HOST=127.0.0.1
DB_PORT=3306
DB_DATABASE=crud_laravel
DB_USERNAME=root
DB_PASSWORD=

Untuk nama database sesuaikan dengan nama database yang anda buat dan username password sesuaikan dengan yang anda miliki. Kalao admin disini menggunakan username dan password default dari XAMPP.

Membuat Migration dan Model

Pada tutorial kali ini kita akan menggunakan tabel siswas sebagai contohnya. Karena itu Kita perlu membuat tabel sekaligus model-nya dulu.

Ketikan perintah berikut ini pada command atau terminal anda:

php artisan make:model Siswa --migration

Setelah itu silahkan buka folder migration (laravel8_master/database/migrations) kemudian cari file yang baru kalian buat dengan nama siswa biasanya namanya pada awalan tanggal kemudian di ikuti dengan nama table (2021_08_29_090949_create_siswas_table.php) buka file tersebut kemudian modifikasi atau buat kode seperti dibawah ini : 

<?php

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

class CreateSiswasTable extends Migration
{
    /**
     * Run the migrations.
     *
     * @return void
     */
    public function up()
    {
        Schema::create('siswas', function (Blueprint $table) {
            $table->id();
            $table->char('NIS');
            $table->text('NamaSiswa');
            $table->text('Alamat');
            $table->timestamps();
        });
    }

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

Perhatikan pada fungsi up ( function_up() ) di situlah kita membuat tabel berserta dengan field yang akan kita buat. Pada kode di atas admin membuat tabel siswas dengan beberapa field diantaranya NIS, NamaSiswa dan Alamat.

Jika sudah membuat tabel ketikan kode di bawah ini pada CMD atau terminal anda.

php artisan migrate

Membuat Resource Controller

Untuk membuat controller pada laravel ketikan kode perintah berikut ini pada terminal atau CMD anda :

php artisan make:controller SiswaControllers --resource

Jika berhasil maka akan terdapat file dengan nama SiswaControllers.php pada folder app/Http/controllers.

Di dalam file SiswaControllers secara otomatis sudah terdapat beberapa baris kode function seperti index(), create(), store(), show(), edit() dan destroy().

Sekarang kita ubah kode yang ada dalam SiswaControllers.php seperti dibawah ini :

<?php

namespace App\Http\Controllers;

use App\Models\Siswa;
use Illuminate\Http\Request;
use Illuminate\Support\Facades\Hash;

class SiswaControllers extends Controller
{
    /**
     * Display a listing of the resource.
     *
     * @return \Illuminate\Http\Response
     */
    public function index()
    {
        $sisw = Siswa::latest()->paginate(5);
        return view ('sisw.index',compact('sisw'))->with('i', (request()->input('page', 1) -1) * 5);
    }

    /**
     * Show the form for creating a new resource.
     *
     * @return \Illuminate\Http\Response
     */
    public function create()
    {
        //
        return view('sisw.create');
    }

    /**
     * Store a newly created resource in storage.
     *
     * @param  \Illuminate\Http\Request  $request
     * @return \Illuminate\Http\Response
     */
    public function store(Request $request)
    {
        //
        $request->validate([
            'NIS' => 'required',
            'NamaSiswa' => 'required',
            'Alamat' => 'required',
        ]);
        Siswa::create($request->all());

        return redirect()->route('sisw.index')->with('succes','Data Berhasil di Input');
    }

    /**
     * Display the specified resource.
     *
     * @param  int  $id
     * @return \Illuminate\Http\Response
     */
    public function show(Siswa $sisw)
    {
        return view('sisw.show',compact('sisw'));
    }

    /**
     * Show the form for editing the specified resource.
     *
     * @param  int  $id
     * @return \Illuminate\Http\Response
     */
    public function edit(Siswa $sisw)
    {
        return view('sisw.edit', compact('sisw'));
    }

    /**
     * Update the specified resource in storage.
     *
     * @param  \Illuminate\Http\Request  $request
     * @param  int  $id
     * @return \Illuminate\Http\Response
     */
    public function update(Request $request, Siswa $sisw)
    {
        $request->validate([
            'NIS' => 'required',
            'NamaSiswa' => 'required',
            'Alamat' => 'required',
        ]);

        $sisw->update($request->all());

        return redirect()->route('sisw.index')->with('succes','Siswa Berhasil di Update');
    }

    /**
     * Remove the specified resource from storage.
     *
     * @param  int  $id
     * @return \Illuminate\Http\Response
     */
    public function destroy(Siswa $sisw)
    {
        $sisw->delete();

        return redirect()->route('sisw.index')->with('succes','Siswa Berhasil di Hapus');
    }
}

Kemudian silahkan Save.

Modifikasi Model

Silahkan anda buka file yang sudah kita buat tadi yaitu Siswa.php yang tersimpan dalam folder app/Models/ kemudianmodifikasi kode-nya seperti pada berikut ini :

<?php

namespace App\Models;

use Illuminate\Database\Eloquent\Factories\HasFactory;
use Illuminate\Database\Eloquent\Model;

class Siswa extends Model
{
    use HasFactory;

    protected $table = 'siswas';
    protected $primaryKey = 'id';

    protected $fillable = [
        'NIS','NamaSiswa','Alamat'
    ];
}

 Menambahkan Route

Fungsi route adalah untuk mengakses resource controller siswa mari kita tambahkan route-nya caranya silahkan buka file web.php yang ada di folder routes (routes/web.php). kemudian modifikasi kode -nya seperti berikut ini :

<?php

use Illuminate\Support\Facades\Route;
use App\Http\Controllers\SiswaControllers;

/*
|--------------------------------------------------------------------------
| 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('welcome');
});
Route::resource('sisw',SiswaControllers::class);

Membuat Halaman View

Kali ini kita akan membuat beberapah halaman view dengan menggunakan bootstrap. Lalu halaman apa saja yang akan kita buat ?  Halaman yang akan kita buat adalah sebagai berikut ini :

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

Kemudian silahkan anda buat file baru dengan nama template.blade.php simpan pada direktori resources/views. Kemudian masukan kode berikut ini :

<!DOCTYPE html>
<html>
<head>
    <title>Tutorial CRUD Laravel 8 untuk Pemula</title>
    <link rel="stylesheet" href="https://maxcdn.bootstrapcdn.com/bootstrap/4.0.0/css/bootstrap.min.css">
</head>
<body>

<div class="container">
    @yield('content')
</div>

</body>
</html>

Setelah itu silahkan buat folder baru dengan nama sisw pada folder resources/views kemudian dalam folder sisw yang baru kita buat tadi buat beberapa file baru dengan nama dan kode dibawah 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>CRUD LARAVEL 8</h2>
            </div>
            <div class="float-right">
                <a class="btn btn-success" href="{{ route('sisw.create') }}"> Input Siswa</a>
            </div>
        </div>
    </div>

    @if ($message = Session::get('succes'))
    <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>NIS</th>
            <th width="280px"class="text-center">Nama Siswa</th>
            <th width="280px"class="text-center">Alamat</th>
            <th width="280px"class="text-center">Action</th>
        </tr>
        @foreach ($sisw as $siswa)
        <tr>
            <td class="text-center">{{ ++$i }}</td>
            <td>{{ $siswa->NIS }}</td>
            <td>{{ $siswa->NamaSiswa }}</td>
            <td>{{ $siswa->Alamat }}</td>
            <td class="text-center">
                <form action="{{ route('sisw.destroy',$siswa->id) }}" method="POST">

                   <a class="btn btn-info btn-sm" href="{{ route('sisw.show',$siswa->id) }}">Show</a>

                    <a class="btn btn-primary btn-sm" href="{{ route('sisw.edit',$siswa->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>

    {!! $sisw->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 Siswa</h2>
        </div>
        <div class="float-right">
            <a class="btn btn-secondary" href="{{ route('sisw.index') }}"> Kembali</a>
        </div>
    </div>
</div>

@if ($errors->any())
    <div class="alert alert-danger">
        <strong>Whoops!</strong> Input gagal.<br><br>
        <ul>
            @foreach ($errors->all() as $error)
                <li>{{ $error }}</li>
            @endforeach
        </ul>
    </div>
@endif

<form action="{{ route('sisw.store') }}" method="POST">
    @csrf

     <div class="row">
        <div class="col-xs-12 col-sm-12 col-md-12">
            <div class="form-group">
                <strong>NIS:</strong>
                <input type="text" name="NIS" class="form-control" placeholder="NIS SISWA">
            </div>
        </div>
        <div class="col-xs-12 col-sm-12 col-md-12">
            <div class="form-group">
                <strong>Nama Siswa:</strong>
                <input type="text" name="NamaSiswa" class="form-control" placeholder="NAMA SISWA">
            </div>
        </div>
        <div class="col-xs-12 col-sm-12 col-md-12">
            <div class="form-group">
                <strong>Alamat:</strong>
                <textarea class="form-control" style="height:150px" name="Alamat" 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 Siswa</h2>
            </div>
            <div class="float-right">
                <a class="btn btn-secondary" href="{{ route('sisw.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>NIS:</strong>
                {{ $sisw->NIS }}
            </div>
        </div>
        <div class="col-xs-12 col-sm-12 col-md-12">
            <div class="form-group">
                <strong>Nama Siswa:</strong>
                {{ $sisw->NamaSiswa }}
            </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 Siswa</h2>
            </div>
            <div class="float-right">
                <a class="btn btn-secondary" href="{{ route('sisw.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('sisw.update',$sisw->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>NIS:</strong>
                <input type="text" name="NIS" class="form-control" placeholder="NIS SISWA" value="{{ $sisw->NIS }}">
            </div>
        </div>
        <div class="col-xs-12 col-sm-12 col-md-12">
            <div class="form-group">
                <strong>Nama Siswa:</strong>
                <input type="text" name="NamaSiswa" value="{{ $sisw->NamaSiswa }}" class="form-control" placeholder="NAMA SISWA">
            </div>
        </div>
        <div class="col-xs-12 col-sm-12 col-md-12">
            <div class="form-group">
                <strong>Alamat:</strong>
                <textarea class="form-control" style="height:150px" name="Alamat" placeholder="Content">{{ $sisw->Alamat }}</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

Test Program

Masih sama dengan laravel versi sebelumnya silahkan silahkan ketikan perintah berikut php artisan serve pada terminal atau CMD anda kemudian buka browser anda ketikan alamat berikut ini pada web browser anda http://127.0.0.1:8000/sisw jika berashil maka muncul beberpa tampilan seperti berikut ini :

Halaman Index :

Halaman Form Input


Halaman Show

Halaman Form Edit


Kesimpulan

Pada artikel kali ini kita sudah mempelajari tentang cara membuat CRUD di Laravel 8 kata lain dari CRUD kalao di bahasa indonesiakan adalah Membuat, Membaca, Edit dan Hapus. Mayoritas saat kita mengenal framework atau bahasa pemrograman baru yang berhubungan dengan database yang sering kita cari adalah tutorial cara menyimpan, mengedit dan menghapus data dengan laravel 8 misalnya seperti yang saat ini kita pelajari.

Step by step sudah kita pratekan melalui kode-kode diatas mohon maaf jika dalam penyampainnya ada yang kurang jelas bisa kita diskusikan dalam kolom komentar dibawah ini :









13 comments for "Tutorial CRUD Laravel 8 Simple dan Mudah Untuk Pemula"

  1. terimakasih kode nya bisa jalan tanpa error udah cukup ngeri di bagian model dan controller nya maklum baru belajar laravel :)

    ReplyDelete
  2. terima kasih atas ilmunya. tapi sebelumnya saya izin bertanya. untuk yang ini apa ya maksudnya
    pada bagian href="{{ route('sisw.show',$siswa->id) }} saya belum mengerti. terima kasih

    ReplyDelete
  3. terimakasih atas ilmunya, mohon maaf setelah saya coba hanya stag di laravelnya, mohon pencerahannya.

    ReplyDelete
  4. kenapa ya eror
    undefined $sisw

    ReplyDelete
  5. turorialnya kurang lengkap kak, harusnya ada folder sisw di dalem view

    ReplyDelete
  6. Tambahan tutornya kurang lengkap, untuk penempatan file index,create,show, edit di simpan di dalam resource/views/sisw

    lalu untuk template.blade.php di simpan di resource/views

    ReplyDelete
  7. Terima kasih banyaak.. Alhamdulillah berjalan tidak ada error

    ReplyDelete