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 :
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 :
- template.blade.php
- index.blade.php
- create.blade.php
- show.blade.php
- 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
terimakasih kode nya bisa jalan tanpa error udah cukup ngeri di bagian model dan controller nya maklum baru belajar laravel :)
ReplyDeletemantapp
Deleteterima kasih atas ilmunya. tapi sebelumnya saya izin bertanya. untuk yang ini apa ya maksudnya
ReplyDeletepada bagian href="{{ route('sisw.show',$siswa->id) }} saya belum mengerti. terima kasih
detailnya
Deleteterimakasih atas ilmunya, mohon maaf setelah saya coba hanya stag di laravelnya, mohon pencerahannya.
ReplyDeletehhaha iyaa kak smaa
Deletemasih belum error di tampilan
ReplyDeletekenapa ya eror
ReplyDeleteundefined $sisw
View [sisw.index] not found. :(
Deleteturorialnya kurang lengkap kak, harusnya ada folder sisw di dalem view
ReplyDeleteTambahan tutornya kurang lengkap, untuk penempatan file index,create,show, edit di simpan di dalam resource/views/sisw
ReplyDeletelalu untuk template.blade.php di simpan di resource/views
Terima kasih banyak.baru belajar.
DeleteTerima kasih banyaak.. Alhamdulillah berjalan tidak ada error
ReplyDelete