Tutorial CRUD Eloquent Laravel
Jika sebelumnya kita telah belajar tentang crud laravel dengan facades DB, sekarang disini kita akan belajar bagaiman melakukan proses Create, read, update dan delete menggunakan fitur Eloquent. Sederhananya Eloquent ini merupakan fitur untuk manajemen database sehingga penulisan perintah SQL untuk operasi database jadi lebih sederhana.
Sebelum Anda mengikuti Tutorial CRUD Eloquent saya asumsikan bahwa Anda sebelumnya sudah belajar contoh crud laravel yang sebelumnya pernah saya jelaskan, sehingga dalam tutorial ini saya tidak perlu menjelaskannya dari awal
Berikut ini adalah Tutorial CRUD Eloquent Laravel :
#1 Buat Migration
Pertama kita buat sebuah tabel terlebih dahulu menggunakan fitur migration laravel
php artisan make:migration create_janda_table
Jika sudah selesai silahkan buka file tabel yang sudah dibuat pada folder database/migrations, kemudian isi dengan skema atau struktur tabel seperti berikut
<?php
use Illuminate\Database\Migrations\Migration;
use Illuminate\Database\Schema\Blueprint;
use Illuminate\Support\Facades\Schema;
return new class extends Migration
{
/**
* Run the migrations.
*
* @return void
*/
public function up()
{
Schema::create('janda', function (Blueprint $table) {
$table->increments('janda_id');
$table->string('nama',65)->nullable();
$table->integer('usia');
$table->integer('jumlah_anak');
$table->enum('status', ['Cerai Mati', 'Cerai Hidup']);
$table->timestamps();
});
}
/**
* Reverse the migrations.
*
* @return void
*/
public function down()
{
Schema::dropIfExists('janda');
}
};
Kemudian jalankan kembali artisan untuk membuat tabelnya :
php artisan migrate
#2 Buat Seeder
Selanjutnya supaya mempersingkat waktu, kita buat sebuah data sembarang menggunakan seeder dan faker untuk mengisi database
php artisan make:seeder Jandaseeder
Selanjutnya buka file Jandaseeder.php yang berada di database/seeders
<?php
namespace Database\Seeders;
use Illuminate\Database\Console\Seeds\WithoutModelEvents;
use Illuminate\Database\Seeder;
use Illuminate\Support\Facades\DB;
use Faker\Factory as Faker;
class Jandaseeder extends Seeder
{
/**
* Run the database seeds.
*
* @return void
*/
public function run()
{
$faker = Faker::create('id_ID');
$gender = $faker->randomElement(['female']);
$status = $faker->randomElement(['Cerai Mati','Cerai Hidup']);
for ($i=1; $i <50 ; $i++) {
DB::table('janda')->insert([
'nama'=>$faker->name($gender),
'usia'=>$faker->numberBetween(25,30),
'jumlah_anak'=>$faker->numberBetween(1,5),
'status'=>$status
]);
}
}
}
Selanjutnya jalankan kembali artisan untuk menggenerate data seeder ke databases
php artisan db:seed –class=Jandaseeder
#3 Buat Model
Selanjutnya buat model untuk digunakan pada controllers dalam rangka mempermudah operasi database
php artisan make:model Jandamodel
Selanjutnya buka file Jandamodel.php pada folder Models lalu isi seperti berikut :
<?php
namespace App\Models;
use Illuminate\Database\Eloquent\Factories\HasFactory;
use Illuminate\Database\Eloquent\Model;
class Jandamodel extends Model
{
protected $table ="janda";
protected $primaryKey = 'janda_id';
protected $fillable = [
'nama',
'usia',
'jumlah_anak',
'status',
];
}
#4 Buat Controllers
php artisan make:controller Janda
Silahkan buka controller masih – masing kemudian untuk implementasi model yang dibuat, Anda bisa melihat contoh dibawah ini
#5 Blade
Silahkan buat file blade masing – masing untuk proses CRUD, sebenarnya untuk blade tidak ada perbedaan seperti yang sudah pernah saya jelaskan pada contoh crud laravel, karena yang paling signifikan perbedaannya adalah pada operasi database di controllers, silahkan tambahkan file - file contoh dibawah ini ke views
janda_create.blade.php
<!DOCTYPE html>
<html>
<head>
<meta charset="utf-8">
<meta name="viewport" content="width=device-width, initial-scale=1">
<title> Create</title>
</head>
<body>
@if($errors->any())
<ul>
@foreach($errors->all() as $error)
<li>{{$error}}</li>
@endforeach
</ul>
@endif
@if(session()->has('message'))
<p style="color:green;">{{session()->get('message')}}</p>
@endif
<p>Tambah data janda</p>
<form action="/janda/proses" method="post">
{{csrf_field()}}
<table width="700px">
<tr>
<td>Nama Lengkap</td>
<td><input type="text" name="nama" size="30" value="{{old('nama')}}"></td>
</tr>
<tr>
<td>Usia</td>
<td><input type="text" name="usia" value="{{old('usia')}}" size="30"></td>
</tr>
<tr>
<td>Jumlah Anak</td>
<td><input type="number" name="jumlah_anak" value="{{old('jumlah_anak')}}"></td>
</tr>
<tr>
<td>Status</td>
<td><select><option value="Cerai Mati">Cerai Mati</option><option value="Cerai Hidup"> Cerai Hidup</option></select></td>
</tr>
</table>
<input type="submit" name="simpan" value="simpan"><a href="/janda">kembali</a>
</form>
</body>
</html>
janda_edit.blade.php
<!DOCTYPE html>
<html>
<head>
<meta charset="utf-8">
<meta name="viewport" content="width=device-width, initial-scale=1">
<title></title>
</head>
<body>
@if(session()->has('message'))
<p>{{session()->get('message')}}</p>
@endif
<form action="/janda/update" method="post">
{{csrf_field()}}
<table width="700px" border="0">
@foreach($janda as $data)
<input type="hidden" name="janda_id" value="{{$data->janda_id}}">
<tr>
<td>Nama Lengkap</td>
<td><input type="text" name="nama" value="{{$data->nama}}"></td>
</tr>
<tr>
<td>Usia</td>
<td><input type="number" name="usia" value="{{$data->usia}}"></td>
</tr>
<tr>
<td>Jumlah Anak</td>
<td><input type="text" name="jumlah_anak" value="{{$data->jumlah_anak}}"></td>
</tr>
<tr>
<td>Status</td>
<td>
<select name="status">
<option value="{{$data->status}}">{{$data->status}}</option>
<option value="Cerai Mati">Cerai Mati</option>
<option value="Cerai Hidup"> Cerai Hidup</option>
</select>
</td>
</tr>
@endforeach
<tr>
<td colspan="2"><input type="submit" name="simpan" value="update"></td>
</tr>
<tr>
<td><a href="/janda">Back</a>
</td>
</tr>
</table>
</body>
</html>
janda_table.blade.php
<!DOCTYPE html>
<html>
<head>
<meta charset="utf-8">
<meta name="viewport" content="width=device-width, initial-scale=1">
<title>Data janda</title>
</head>
<body>
@if(session()->has('message'))
<p>{{session()->get('message')}}</p>
@endif
@if(session()->has('error'))
<p style="color:red;">{{session()->get('error')}}</p>
@endif
<form action="/janda/cari" method="GET">
<input type="text" name="cari" value="{{old('cari')}}" placeholder="cari" size="30">
<input type="submit" value="cari">
</form>
<table border="1" width="100%">
<tr>
<td>Nama Lengkap</td>
<td>Usia</td>
<td>Jumlah Anak</td>
<td>Status</td>
<td>Aksi</td>
</tr>
@forelse($janda as $data)
<tr>
<td>{{$data->nama}}</td>
<td>{{$data->usia}}</td>
<td>{{$data->jumlah_anak}}</td>
<td>{{$data->status}}</td>
<td><a href="/janda/edit/{{$data->janda_id}}">Edit</a> / <a href="/janda/delete/{{$data->janda_id}}">Delete</a></td>
</tr>
@empty
<tr>
<td colspan="5">Belum terdapat data</td>
</tr>
@endforelse
<tr>
<td colspan="5"><a href="/janda/create"> Tambah data</a></td>
</tr>
</table>
<p> Halaman : {{$janda->currentPage()}} / Jumlah Data : {{$janda->total()}} / Data perhalaman :{{$janda->perPage()}}</p>
<p>{{$janda->links('pagination::simple-bootstrap-4')}}</p>
</body>
</html>
#6 Routing
Selanjutntya atur rute url ke controller seperti berikut
Route::get('/janda',[App\Http\Controllers\Janda::class,'janda_table']);
Route::get('/janda/create',[App\Http\Controllers\Janda::class,'create']);
Route::post('/janda/proses',[App\Http\Controllers\Janda::class,'proses']);
Route::get('/janda/edit/{janda_id}',[App\Http\Controllers\Janda::class,'edit']);
Route::post('/janda/update',[App\Http\Controllers\Janda::class,'update']);
Route::get('/janda/delete/{janda_id}',[App\Http\Controllers\Janda::class,'delete']);
Route::get('/janda/cari',[App\Http\Controllers\Janda::class,'cari']);
0 Response to "Tutorial CRUD Eloquent Laravel"
Post a Comment
Komentar yang Anda kirim akan terlebih dahulu di moderasi oleh Admin