Digitalmapia adalah situs dimana semua orang bisa menulis artikelnya sendiri. Klik "Login/Register untuk masuk, lalu klik "Tulis Artikel" untuk mulai menulis.

Membuat CRUD Sederhana pada Laravel : Part 4

Pada kesempatan kali ini kita akan membuat fungsi delete .Fungsi delete digunakan untuk menghapus data yang telah kita masukan ke dalam database. Pertama-tama, tambahkan link ‘delete’ di sebelah link edit dengan cara mengubah file listbook.blade.php sebagai berikut:

@extends('layout')

@section('content')
<section class="container">
 <table class="table">
    <tr>
       <th>Title</th>
       <th>Author</th>
       <th>Description</th>
       <th>Price</th>
       <th>#</th>
    </tr>
    @foreach($booksdata as $book)
      <tr>
         <td>{{ $book->title }}</td>
         <td>{{ $book->author }}</td>
         <td>{{ $book->description }}</td>
         <td>{{ $book->price }}</td>
         <td>{{ link_to_action('BookController@edit', 'edit', array($book->id))}} | {{ link_to_action('BookController@delete', 'delete', array($book->id))}}</td>
      </tr>
    @endforeach
 </table>
</section>
@stop

Perhatikan, pada kode diatas kita menambahkan {{ link_to_action('BookController@delete', 'delete', array($book->id))}} yang digunakan untuk menampilkan link ‘delete’. Apabila anda jalankan di browser dengan cara mengakses route ‘booklist’, maka akan muncul error sebagai berikut:

ErrorException
Route [BookController@delete] not defined. (View: /var/www/laravel/app/views/listbook.blade.php)

Hal, ini disebabkan kita belum menambahkan route dan action yang diperlukan. Oleh karena itu, tambahkan route baru sebagai berikut:

Route::get('book/delete/{id}', 'BookController@delete');

Jika, anda jalankan lagi pada browser maka tampilan akan berjalan normal dan sudah terdapat link delete didalam tabel. Namun, apabila link tersebut anda klik, tetap akan terjadi error, karena method ‘delete’ masih belum dibuat, untuk itu pada BookController, tambahkan fungsi delete sebagai berikut:

public function delete($id)
{
   # code...
}

Execute Delete

Sekarang, jika anda klik ‘delete’ maka tidak akan muncul lagi pesan error. Namun, data tersebut masih belum terhapus dari dalam database karena kita belum menambahkan apa-apa pada method delete. Untuk itu, ubah fungsi delete menjadi sebagai berikut:

    public function delete($id)
    {
      $book = Book::find($id);
      $book->delete();
      return Redirect::to('booklist');
    }

Sekarang, jika anda klik link delete maka data buku yang bersangkutan akan dihapus. Perhatikan bahwa kode return Redirect::to('booklist'); digunakan untuk mengembalikan (redirect) anda ke halaman dengan route ‘booklist’.

Selesai. Untuk mengunduh source code dari tutorial ini, silahkan klik disini.

Laravel Wallpapper
  • rainhanifa

    Makasih tutorialnya :) Oiya, kalo misal saya ingin menampilkan dialog konfirmasi seperti javascript alert(), sebelum data dihapus gimana caranya ya?

  • Yoma Putra Perdana

    lanjutkan terus tutorial tentang laravelnya :)

  • miruza annas

    oke gan, CRUD udah kelar ,,,
    untuk login ada ga ?

  • nenk ruru

    Gan.. kalo untuk munculin confirm box delete nya gimana yaa..aku udah bisa delete tapi belom ada box alertnya..