Menbuat Create, Read, Update dan Delete (CRUD) di Laravel
pada tutorial kali ini kita akan membuat CRUD dilaravel jadi langsung saja
pertama buat project dengan perintah
composer create-project laravel/laravel crud-laravel
tunggu proses download sampai selesai.
buka file project di editor, disini Saya menggunkan VScode kemudian buat database dengan nama crud_laravel di phpmyadmin dan atur koneksi databsenya di file .env
DB_CONNECTION=mysql DB_HOST=127.0.0.1 DB_PORT=3306 DB_DATABASE=crud_laravel DB_USERNAME=root DB_PASSWORD=
selanjutnya kita buat struktur tabel dengan migrations dengan perintah di terminal/cmd
php artisan make:migration artikel
selanjutnya kita edit file migration yang behasil di generate dengan menambahkan field yang dibutuhkan di table terse but seperti berikut ini
crud-laravel/database/migrations/2021_09_04_050427_artikel.php
<?php
use Illuminate\Database\Migrations\Migration;
use Illuminate\Database\Schema\Blueprint;
use Illuminate\Support\Facades\Schema;
class Artikel extends Migration
{
/**
* Run the migrations.
*
* @return void
*/
public function up()
{
Schema::create('artikel', function (Blueprint $table) {
$table->bigIncrements('id');
$table->string('title');
$table->mediumText('deskripsi');
$table->string('kategori');
$table->timestamps();
});
}
/**
* Reverse the migrations.
*
* @return void
*/
public function down()
{
Schema::dropIfExists('artikel');
}
}selanjutnya kembali lagi terminal/cmd kemudian kita generate tabelnya dengan perintah
php artisan migrate
Jika berhasil migrate maka di database crud_laravel ada tabel artikel.
selanjutnya kita akan buat model artikel dengan perintah
php artisan make:model Artikel
selanjutnya edit file model tersebut menjadi seperti berikut ini
crud-laravel/app/Models/Artikel.php
<?php
namespace App\Models;
use Illuminate\Database\Eloquent\Factories\HasFactory;
use Illuminate\Database\Eloquent\Model;
class Artikel extends Model
{
use HasFactory;
protected $table = 'artikel';
protected $fillable = [
'judul',
'deskripsi',
'kategori',
];
}selanjutnya kita buat controller artikel dengan perintah
php artisan make:controller ArtikelController
selanjutnya edit file controller artikel tersebut menjadi seperti berikut ini
crud-laravel/app/Http/Controllers/ArtikelController.php
<?php
namespace App\Http\Controllers;
use Illuminate\Http\Request;
use App\Models\Artikel;
class ArtikelController extends Controller
{
// untuk menampilkan list data
public function index()
{
$data = Artikel::paginate(5);
return view('artikel.index', compact('data'));
}
// untuk menampilkan form input
public function create()
{
return view('artikel.create');
}
// untuk menyimpan data
public function store(Request $request)
{
$model = $request->all();
Artikel::create($model);
return redirect('artikel');
}
// untuk menampilkanform edit
public function edit($id)
{
$data = Artikel::find($id);
return view('artikel.edit', compact('data'));
}
// untuk mengupdate data
public function update(Request $request)
{
$model = $request->all();
$data = Artikel::find($model['id']);
$data->update($model);
return redirect('artikel');
}
// untuk menhapus data
public function destroy($id)
{
$data = Artikel::find($id)->delete();
return redirect('artikel');
}
}selanjutnya kita akan membuat form until menampilkan dan menginput datanya. silahkan buat folder artikel di dalam folder resource/view/artikel dan dialam folder artikel buat 3 file dengan nama index.blade,php, create.blade.php dan edit.blade.php
selanjutnya kita kirtikkan sintax htmlnya untuk membuat tampilannya seperti berikut ini
file index.blade.php untuk menampilkan list data artikel
crud-laravel/resources/views/artikel/index.blade.php
<!DOCTYPE html>
<html lang="en">
<head>
<title>CRUD Laravel Example</title>
<meta charset="utf-8">
<meta name="viewport" content="width=device-width, initial-scale=1">
<link rel="stylesheet" href="https://maxcdn.bootstrapcdn.com/bootstrap/4.5.2/css/bootstrap.min.css">
<script src="https://ajax.googleapis.com/ajax/libs/jquery/3.5.1/jquery.min.js"></script>
<script src="https://cdnjs.cloudflare.com/ajax/libs/popper.js/1.16.0/umd/popper.min.js"></script>
<script src="https://maxcdn.bootstrapcdn.com/bootstrap/4.5.2/js/bootstrap.min.js"></script>
</head>
<body>
<div class="container">
<br>
<h2>Artikel</h2>
<a href="{{route('artikel.create')}}" class="btn btn-success">Add New Data</a>
<br>
<br>
<table class="table table-bordered">
<thead>
<tr>
<th width="6%">No</th>
<th width="17%">Judul</th>
<th width="*%">Deskripsi</th>
<th width="13%">Kategori</th>
<th width="12%">Aksi</th>
</tr>
</thead>
<tbody>
@foreach ($data as $key => $d )
<tr>
<td>{{++$key}}</td>
<td>{{ $d->judul}}</td>
<td>{{ $d->deskripsi}}</td>
<td>{{ $d->kategori}}</td>
<td>
<a href="{{url('artikel/edit/'.$d->id)}}" class="btn btn-warning btn-sm">edit</a>
<a href="{{url('artikel/delete/'.$d->id)}}" class="btn btn-danger btn-sm">delete</a>
</td>
</tr>
@endforeach
</tbody>
</table>
{{ $data->links()}}
</div>
</body>
</html>file create.blade.php untuk menampilkan form input data artikel
crud-laravel/resources/views/artikel/create.blade.php
<!DOCTYPE html>
<html lang="en">
<head>
<title>Bootstrap Example</title>
<meta charset="utf-8">
<meta name="viewport" content="width=device-width, initial-scale=1">
<link rel="stylesheet" href="https://maxcdn.bootstrapcdn.com/bootstrap/4.5.2/css/bootstrap.min.css">
<script src="https://ajax.googleapis.com/ajax/libs/jquery/3.5.1/jquery.min.js"></script>
<script src="https://cdnjs.cloudflare.com/ajax/libs/popper.js/1.16.0/umd/popper.min.js"></script>
<script src="https://maxcdn.bootstrapcdn.com/bootstrap/4.5.2/js/bootstrap.min.js"></script>
</head>
<body>
<div class="container">
<br>
<h2>Form Artikel</h2>
<p>create new data</p>
<form action="{{ route('artikel.store') }}" method="POST">
@csrf
<div class="form-group">
<label for="judul">Judul:</label>
<input type="text" class="form-control" placeholder="Judul" name="judul" required>
</div>
<div class="form-group">
<label for="deskripsi">Deskripsi:</label>
<textarea class="form-control" rows="5" cols="5" name="deskripsi" placeholder="Deskripsi"></textarea>
</div>
<div class="form-group">
<label for="kategori">Kategori:</label>
<select name="kategori" class="form-control" required>
<option value="">-- pilih --</option>
<option>php</option>
<option>java</option>
<option>js</option>
</select>
</div>
<button type="submit" class="btn btn-primary">Save</button>
</form>
</div>
</body>
</html>
file edit.blade.php untuk menampilkan form edit data artikel
crud-laravel/resources/views/artikel/edit.blade.php
<!DOCTYPE html>
<html lang="en">
<head>
<title>Bootstrap Example</title>
<meta charset="utf-8">
<meta name="viewport" content="width=device-width, initial-scale=1">
<link rel="stylesheet" href="https://maxcdn.bootstrapcdn.com/bootstrap/4.5.2/css/bootstrap.min.css">
<script src="https://ajax.googleapis.com/ajax/libs/jquery/3.5.1/jquery.min.js"></script>
<script src="https://cdnjs.cloudflare.com/ajax/libs/popper.js/1.16.0/umd/popper.min.js"></script>
<script src="https://maxcdn.bootstrapcdn.com/bootstrap/4.5.2/js/bootstrap.min.js"></script>
</head>
<body>
<div class="container">
<br>
<h2>Form Artikel</h2>
<p>create new data</p>
<form action="{{ route('artikel.update') }}" method="POST">
<input type="hidden" name="id" value="{{$data->id}}">
@csrf
<div class="form-group">
<label for="judul">Judul:</label>
<input type="text" class="form-control" placeholder="Judul" name="judul" required value="{{$data->judul}}">
</div>
<div class="form-group">
<label for="deskripsi">Deskripsi:</label>
<textarea class="form-control" rows="5" cols="5" name="deskripsi">{{$data->deskripsi}}</textarea>
</div>
<div class="form-group">
<label for="kategori">Kategori:</label>
<select name="kategori" class="form-control" >
<option {{$data->kategori == 'php' ? 'selected="selected"' : ''}}>php</option>
<option {{$data->kategori == 'java' ? 'selected="selected"' : ''}}>java</option>
<option {{$data->kategori == 'js' ? 'selected="selected"' : ''}}>js</option>
</select>
</div>
<button type="submit" class="btn btn-primary">Save</button>
</form>
</div>
</body>
</html>
Jika Judah terakhir kita buatkan routenya agar data diakses melaui broser, edit file web.php
crud-laravel/routes/web.php
<?php
use Illuminate\Support\Facades\Route;
use App\Http\Controllers\ArtikelController as Artikel;
Route::get('/', function () {
return view('welcome');
});
# route artikel
Route::group(['prefix' => '/artikel'], function () {
Route::get('/', [Artikel::class, 'index'])->name('artikel');
Route::get('/create', [Artikel::class, 'create'])->name('artikel.create');
Route::post('/store', [Artikel::class, 'store'])->name('artikel.store');
Route::get('/edit/{id}', [Artikel::class, 'edit'])->name('artikel.edit');
Route::post('/update', [Artikel::class, 'update'])->name('artikel.update');
Route::get('/delete/{id}', [Artikel::class, 'destroy'])->name('artikel.delete');
});
php artisan serve
kemudian akses broser 127.0.0.1:8000/artikel
untuk source code lengkapnya bisa download di sini-->link GitHub
sekian dulu tutorial kali ini dan terima kasih.

Leave a Comment