Halo sobat koder! Kali ini kita akan belajar membuat CRUD (Create, Read, Update, Delete) pada framework Laravel 5.3. Jika kalian sudah belajar PHP sebelumnya, pastinya memahami bahwa CRUD adalah salah satu elemen penting untuk membuat aplikasi berbasi web. Nah, kali ini kita akan menggunakan framework Laravel untuk membuat aplikasi CRUD sederhana.

Sebelum memulai membuatnya, diharapkan sobat koder sudah paham penggunaan framework Laravel ya. Paling tidak sudah paham dasar routing dan mengerti penggunaan konsep MVC. Nah kali ini, kita akan mulai membuat databasenya terlebih dahulu.

Mempersiapkan Migration untuk Database

Untuk membuat aplikasi CRUD sederhana ini, kita memerlukan sebuah database supaya nantinya bisa kita olah melalui aplikasi. Pertama jalankan perintah untuk membuat model:
php artisan make:model Post -m
Perintah diatas digunakan untuk membuat sebuah model bernama Post. Kemudian supaya model kita memiliki migration sekaligus, kita bisa menambahkan atribut -m. Hasilnya kurang lebih akan seperti berikut.

Kemudian buka file migration yang telah kita buat tadi pada folder database/migrations/. Kemudian tambahkan kode berikut pada function up()
public function up()
{
Schema::create('posts', function (Blueprint $table) {
$table->increments('id');
$table->string('title');
$table->text('post');
$table->timestamps();
});
}

Agar sederhana, disini kita hanya membuat 2 kolom tambahan yaitu title dan post. Kemudian kita jalankan perintah migrate pada terminal untuk menjalankan migrationnya.
php artisan migrate
Hasilnya kurang lebih akan seperti berikut:

Persiapan untuk database sudah selesai, sekarang saatnya kita membuat codingnya 😉

Mengatur Routing 

Pertama, kita atur dahulu routingnya supaya dapat mengakses controller kita. Buka file routes/web.php. Masukan kode berikut:
Route::resource('post', 'PostController');
Disini kita cukup menggunakan Route::resource saja untuk mengatur seluruh kebutuhan get dan post pada aplikasi kita nantinya. Jadi tidak perlu membuat satu persatu untuk method indeks, show, create, edit dan lainnya. Silahkan cek routenya dengan perintah berikut:
php artisan route:list
Hasilnya akan seperti berikut:

Membuat Model

Supaya nantinya model kita dapat diisi data menggunakan cara mass assignment, maka ada sedikit perubahan yang harus dilakukan. Silahkan lihat kode berikut:
class Post extends Model
{
protected $fillable = ['title', 'post'];
}

Membuat Controller

Kita memerlukan beberapa method pada controller untuk membuat CRUD berfungsi. Laravel sudah dibuat untuk memudahkan hal ini. Caranya, silahkan ketikan perintah berikut pada terminal:
php artisan make:controller -m Post PostController
Disini kita menambahkan fungsi -m Post supaya controller kita nantinya akan langsung memanggil model Post secara default.

Kemudian ketik code berikut pada controller yang telah kita buat tadi di folder app/Http/Controllers

Index

public function index()
{
return view('post.index', ['posts' => Post::all()]);
}

Create

public function store(Request $request)
{
$this->validate($request, [
'title' => 'required',
'post' => 'required',
]);

Post::create($request->all());
return redirect()->route('post.index');
}

Edit

public function edit($id)
{
return view('post.edit', ['post' => Post::find($id)]);
}

Update

public function update(Request $request, $id)
{
Post::find($id)->update($request->all());
return redirect()->route('post.index');
}

Delete

public function destroy($id)
{
Post::find($id)->delete();
return redirect()->route('post.index');
}

Membuat View

Agar tampilannya sederhana, kita cukup membuat 2 buah view untuk aplikasi CRUD sederhana ini. Kita akan menaruh form create pada halaman ini sekaligus. Berikut codingnya:

Index 

<div class="error">
{{ Html::ul($errors->all()) }}
</div>
{!! Form::open(['route' => 'post.store']) !!}
<div class="form-input">
{{ Form::label('title', 'Title') }}
{{ Form::text('title') }}
</div>
<div class="form-input">
{{ Form::label('post', 'Post') }}
{{ Form::textarea('post') }}
</div>
<div class="form-input">
{{ Form::submit('Submit', ['class' => 'btn']) }}
</div>
{!! Form::close() !!}

@foreach ($posts as $post)
<div class="post">
<h4 class="post-title">{{ $post->title }}</h4>
<p class="post-body">{{ $post->post }}</p>
<div class="post-footer">
<a href="{{ route('post.edit', $post->id) }}" class="btn">Edit</a>
<a href="{{ route('post.delete', $post->id) }}" class="btn">Hapus</a>
</div>
</div>
@endforeach

Edit

<div class="error">
{{ Html::ul($errors->all()) }}
</div>

{{ Form::model($post, array('route' => array('post.update', $post->id), 'method' => 'PUT')) }}
<div class="form-input">
{{ Form::label('title', 'Title') }}
{{ Form::text('title') }}
</div>
<div class="form-input">
{{ Form::label('post', 'Post') }}
{{ Form::textarea('post') }}
</div>
<div class="form-input">
{{ Form::submit('Submit', ['class' => 'btn']) }}
</div>
{!! Form::close() !!}

File CSS

File ini sebenarnya tidak berpengaruh pada aplikasi, hanya untuk mempercantik tampilan saja.
body {
font-family: "Raleway", sans-serif;
font-weight: 100;
font-size: 16px;
color: #000;
background-color: #f5f5f5;
}
form {
border: 1px solid #ddd;
border-radius: 3px;
max-width: 500px;
margin-right: auto;
margin-left: auto;
background-color: #f8f8f8;
}
label {
color: #000;
display: block;
margin-bottom: 5px;
}
.form-input {
display: block;
padding: 10px 10px;
}
.form-input input {
width: 100%;
height: 25px;
border-radius: 3px;
border:1px solid #ddd;
}
.form-input textarea {
width: 99%;
height: 40px;
border-radius: 3px;
border:1px solid #ddd;
}
.form-input .btn {
height: 30px;
font-family: "Raleway";
font-weight: 600;
}
.post {
display: block;
width: 500px;
margin: 10px auto;
border: 1px solid #ddd;
border-radius: 3px;
background-color: #f9f9f9;
}
.post .post-title {
margin: 0;
padding: 10px 10px;
}
.post .post-body {
margin: 0;
padding: 0px 10px 10px 10px;
}
.post .post-footer {
margin: 0;
padding: 0px 10px 10px 10px;
}
.post .post-footer .btn {
background-color: #ddd;
padding: 5px 7px;
border-radius: 3px;
text-decoration: none;
font-weight: 600;
color: #000;
font-size: 12px;
}

Hasil

Berikut adalah hasil dari programnya

Akhir Kata

Sangat mudah bukan proses pembuatan CRUD di laravel. Hal ini karena memang Laravel dibuat untuk memudahkan developer dalam mengembangkan aplikasinya. Kodenya pun jadi mudah dipahami dan sangat rapi karena telah menggunakan konsep MVC. Nah sekian tutorial CRUD pada Laravel untuk pemula kali ini. Semoga mudah dipahami dan dapat bermanfaat bagi sobat koder semuanya..