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