Belajar Laravel : Membuat Form Insert Data

Membuat form dan proses insert data mahasiswa

Tahapan yang biasa saya lakukan untuk melalukan proses CRUD (Create, Read, Update, Delete)

Operation adalah membuat route, model lengkap dengan migrationnya, controller dan view.

Untuk memulai tahapan yang sudah saya sebut diatas, buka file `web.php` yang berada

di folder routes.

`

Route::get('/mahasiswa/create', 'MahasiswaController@create');

`

Dapat diartikan route yang telah kita buat diatas seperti berikut:

jika mengakses url ‘mahasiswa/create’ maka route akan memerintahkan controller

dengan method create untuk merespon request dari url tersebut.

Sebelum lanjut membuat controller, kita akan membuat model dan migration agar kita

dapat melakukan CRUD Operation dengan database. Buka terminal / cmd dan lakukan seperti

di bawah ini.

`

php artisan make:model Mahasiswa -m

`

Perintah diatas akan mengeksekusi membuat Model Mahasiswa, flag `-m` itu berarti

kita juga akan mengenerate file migration secara otomatis.

Selanjutkan kita akan membuat schema migration, buka file migration mahasiswa yang berada pada folder

migration

Dan tambahkan schemanya seperti berikut.

$table->bigIncrements('id');
$table->string('name');
$table->string('email');
$table->date('dob');
$table->text('address')->nullable();
$table->timestamps();

Dari schema di atas, id akan menjadi primary key secara default. Selanjutkan lakukan perintah berikut untuk

mengenerate schema yang sudah kita buat ke dalam database.

php artisan migrate

Maka hasilnya akan seperti ini

Masih di terminal / cmd sekarang kita akan mengenerate controller dengan perintah

php artisan make:controller MahasiswaController

Setelah selesai mengenerate controller kita buka MahasiswaController yang sudah kita buat tadi, file controller

akan terdapat pada folder `app\Http\Controllers`. Buat function bernama create seperti yang sudah kita inisialisasi

diroute.

didalam function create diatas, si function create ini akan mengirim perintah ke view untuk menampilkan file

create.blade.php dalam folder mahasiswa. Selanjutnya kita buat file view create di dalam folder mahasiswa, untuk view laravel

berada pada folder resources\views\.

buka view yang sudah kita buat tadi, dan isikan seperti berikut

@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">Tambah Mahasiswa</div>

                <div class="card-body">
                    <form method="POST" action="/mahasiswa">
                        @csrf

						<div class="form-group">
							<label>Nama Lengkap</label>
							<input type="text" class="form-control" name="name" value="{{ old('name') }}">
						</div>
						<div class="form-group">
							<label>Email</label>
							<input type="email" class="form-control" name="email" value="{{ old('email') }}">
						</div>
						<div class="form-group">
							<label>Tanggal Lahir</label>
							<input type="date" class="form-control" name="dob" value="{{ old('dob') }}">
						</div>
						<div class="form-group">
							<label>Alamat</label>
							<textarea name="address" class="form-control" cols="30" rows="10">{{ old('addres') }}</textarea>
						</div>
						<div class="form-group">
							<button class="btn btn-primary">Simpan</button>
						</div>

					</form>
				</div>
			</div>
		</div>
	</div>
</div>
@endsection

Saat tombol submit di tekan maka akan melakukan action ke route /mahasiswa dengan method POST, tidak lupa menambahkan

@csrf kedalam form yaitu token based dari laravel. Tanpa @csrf kita tidak dapat menginsert data selanjutnya kembali lagi

ke route dan tambahkan route mahasiswa dengan methodnya post seperti berikut.

`

Route::post('/mahasiswa', 'MahasiswaController@store');

`

Kembali lagi ke controller dan buat method dengan nama store untuk melakukan proses insert dari form ke database

<?php

namespace App\Http\Controllers;

use App\Mahasiswa;
use Illuminate\Http\Request;

class MahasiswaController extends Controller
{
	public function create()
	{
		return view('mahasiswa.create');
	}

	public function store()
	{
		Mahasiswa::create([
			'name' => request('name'),
			'email' => request('email'),
			'dob' => request('dob'),
			'address' => request('addres')
		]);

		return redirect()->back();
	}
}

Maka controller kita akan seperti ini. Mahasiswa::create itu dapat di artikan seperti `insert into mahasiswa` kalau kita

menggunakan sql query biasa. `request(‘name’)` itu berarti kita mengambil value dari view dengan name=”name” dan seterusnya.

Setelah itu kita akan me return kembali ke view create dengan return redirect()->back().

Yang terakhir buka Model Mahasiswa dan beri guarded = [], agar kita dapat menginsert semua value ke dalam database.

<?php

namespace App;

use Illuminate\Database\Eloquent\Model;

class Mahasiswa extends Model
{
    protected $guarded = [];
}

Setelah teman-teman isi form dan klik simpan, check database untuk membuktikan apakah data sudah berhasil di insert.