Tutorial CRUD menggunakan Laravel dan MySql – Berikut ini adalah tutorial CRUD menggunakan Laravel dan MySql sebagai Database. CRUD sendiri adalah singkatan dari Create Read Update Delete, dengan menggunakan laravel CRUD menjadi lebih mudah karena pada dasarnya sudah ada fungsi-fungsi yang siap pakai jadi kita bisa lebih fokus pada logika bisnis nya.
Langsung saja, pertama-tama kita akan membuat table baru yaitu sg_barang dengan migration, selain file migration kita juga akan membuat model dan controller. Ubah file migration tadi menjadi seperti ini :
<?php
use Illuminate\Support\Facades\Schema;
use Illuminate\Database\Schema\Blueprint;
use Illuminate\Database\Migrations\Migration;
class CreateTableSgBarang extends Migration
{
/**
* Run the migrations.
*
* @return void
*/
public function up()
{
Schema::create('sg_barang', function (Blueprint $table) {
$table->bigIncrements('id');
$table->string('nama_barang')->nullable();
$table->integer('jumlah_barang')->nullable();
$table->text('keterangan')->nullable();
$table->timestamps();
});
}
public function down()
{
Schema::dropIfExists('sg_barang');
}
}
Dan contoh saat membuat dan migrasi seperti ini :

Ubah file model menjadi seperti ini :
<?php
namespace App;
use Illuminate\Database\Eloquent\Model;
class sg_barang extends Model
{
protected $table = 'sg_barang';
protected $fillable = [
'nama_barang',
'jumlah_barang',
'keterangan'
];
}
Ubah file controller menjadi seperti ini :
<?php
namespace App\Http\Controllers;
use Illuminate\Http\Request;
use App\sg_barang as model;
class sg_barang extends Controller
{
public function index(){
$barangs = model::all();
return view('barang.table',compact('barangs'));
}
public function create(){
return view('barang.form');
}
public function store(Request $request){
model::create($request->all());
return redirect('barang');
}
public function show(){
//
}
public function edit($id){
$editForm = true;
$barangs = model::find($id);
return view('barang.form',compact('barangs','editForm'));
}
public function update(Request $request, $id){
$data = $request->except('_method', '_token');
model::where('id',$id)->update($data);
return redirect('barang');
}
public function destroy($id){
model::destroy($id);
return redirect('barang');
}
}
Ubah juga file web.php / routes.php jika teman-teman menggunakan laravel dengan versi 5.2 ke bawah :
<?php
/*
|--------------------------------------------------------------------------
| 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');
});
Auth::routes();
Route::get('/home', 'HomeController@index')->name('home');
Route::resource('/barang', 'sg_barang');
Route::get('/barang/destroy/{id}', 'sg_barang@destroy');
Buat 2 buah view baru untuk bagian list dan form, di sini saya membuat folder baru (letaknya ada pada root\belajar-laravel\resources\views) dengan nama barang lalu saya buat file table.blade.php. Isi file nya seperti ini :
@extends('layouts.app')
@section('content')
<div class="container">
<div class="row justify-content-center">
<div class="col-md-8">
<div class="card">
<div class="card-header">Table Barang</div>
<div class="card-body">
@if (session('status'))
<div class="alert alert-success" role="alert">
{{ session('status') }}
</div>
@endif
<div class="table-responsive">
<a class="btn btn-primary" href="{{ url('barang/create') }}">
Tambah Data
</a>
<p></p>
<table class="table table-hover table-striped table-bordered">
<thead>
<tr>
<th class="text-center">Nama Barang</th>
<th class="text-center">Jumlah Barang</th>
<th class="text-center"> </th>
</tr>
</thead>
<tbody>
@foreach($barangs as $barang)
<tr>
<td>{{ $barang->nama_barang }}</td>
<td>{{ $barang->jumlah_barang }}</td>
<td>
<a href="{{ URL::route('barang.edit',$barang->id) }}"><i class="fas fa-edit"></i></a>
<a href="{{ url('barang/destroy/'.$barang->id) }}"><i class="fas fa-trash-alt"></i></a>
</td>
</tr>
@endforeach
</tbody>
</table>
</div>
</div>
</div>
</div>
</div>
</div>
@endsection
Dan ini adalah file form.blade.php, yang akan jadi interface untuk form inputan :
@extends('layouts.app')
@section('content')
<div class="container">
<div class="row justify-content-center">
<div class="col-md-8">
<div class="card">
<div class="card-header">Table Barang</div>
<div class="card-body">
@if (session('status'))
<div class="alert alert-success" role="alert">
{{ session('status') }}
</div>
@endif
@if(isset($editForm))
{!! Form::model('', ['url' => url('/barang/'.$barangs->id), 'method' => 'put']) !!}
@else
{!! Form::model('', ['url' => url('/barang'), 'method' => 'post']) !!}
@endif
{{ csrf_field() }}
<div class="form-group col-xs-12 col-lg-12">
<label class="control-label">Nama Barang</label>
{{ Form::text('nama_barang', isset($barangs->nama_barang) ? $barangs->nama_barang : null, ['class' => 'form-control']) }}
</div>
<div class="form-group col-xs-12 col-lg-12">
<label class="control-label">Jumlah Barang</label>
{{ Form::number('jumlah_barang', isset($barangs->jumlah_barang) ? $barangs->jumlah_barang : null, ['class' => 'form-control']) }}
</div>
<div class="form-group col-xs-12 col-lg-12">
<label class="control-label">Keterangan</label>
{{ Form::textarea('keterangan', isset($barangs->keterangan) ? $barangs->keterangan : null, ['class' => 'form-control']) }}
</div>
<button type="submit" class="btn btn-success">
Simpan
</button>
{!! Form::close() !!}
</div>
</div>
</div>
</div>
</div>
@endsection
Ini adalah tampilan list :
Dan ini tampilan form nya :

Berikut ini penjelasannya, pertama kita buat dahulu migration untuk detail apa itu migration bisa di lihat di sini (https://soft-gain.com/2019/07/10/cara-dan-penjelasan-migration-pada-laravel/). Controller, pada laravel karena kita menggunakan route dengan method resource maka secara otomatis kita bisa menggunakan 7 fungsi default yaitu index, create, store, show, edit, update, dan destroy.
Index biasa nya berisi logic untuk menampilkan data list atau data dalam bentuk table pada tampilan utama. Seperti yang bisa di lihat pada index kita menggunakan eloquent untuk mengambil data dan melempar nya pada view sebagai variabel.
public function index(){
$barangs = model::all(); // query eloquent
return view('barang.table',compact('barangs')); // memanggil view dan melempar variabel
}
Create biasa nya hanya berisi return view. Return view ini di arahkan pada file view mana yang ingin kita tampilkan saat fungsi di akses.
public function create(){
return view('barang.form'); // view nya ada pada folder barang, file nya adalah form.blade.php
}
Store adalah fungsi yang akan kita pakai saat hendak menyimpan data ke dalam database. Didalam fungsi store biasanya kita sertakan satu argumen yaitu Request dan kita bungkus ke dalam variable $request, guna nya adalah untuk mengambil parameter yang di kirimkan dari form inputan. Lalu untuk return response nya adalah redirect. Redirect berisi argumen url dalam bentuk string, yang mana nantinya halaman akan di alihkan pada url tersebut.
public function store(Request $request){ // argumen request
model::create($request->all()); // query insert dengan elquent
return redirect('barang'); // di alihkan ke halaman barang
}
// tambahan :
// $request->all() berarti mengambil semua form inputan yang ada
// bisa juga mengambil berdasarkan name pada form input, contoh :
// $request->nama_barang
Fungsi edit untuk membuka kembali form beserta dengan data yang akan kita ubah / edit.
public function edit($id){ // argumen id atau primary key
$editForm = true;
$barangs = model::find($id); // query eloquent, mencari data berdasarkan id table
return view('barang.form',compact('barangs','editForm')); // kembalikan hasil query pada tampilan
}
Fungsi update di gunakan untuk merubah data yang sudah ada pada database.
public function update(Request $request, $id){
$data = $request->except('_method', '_token');
model::where('id',$id)->update($data);
return redirect('barang');
}
Dan terakhir adalah fungsi destroy, untuk menghapus data pada database.
public function destroy($id){
model::destroy($id); // query eloquent hapus data berdasarkan primary key
return redirect('barang');
}
Demikian lah contoh sederhana penggunaan CRUD dengan laravel & mysql. Untuk contoh projeknya bisa di ambil dari git saya di link berikut ini (https://github.com/ImmanuelJL/belajar-laravel). Jika ada yang mau di tambahkan atau di koreksi bisa di sertakan di kolom komentar, terima kasih.
