Seputar Pemrograman

Membuat Create, Read, Update dan Delete Menggunakan Eloquent ORM dan RESTful Resource Controllers Laravel

  01 Oktober 2014     Tutorial Framework Laravel     seputarpemrograman

Pada tutorial sebelumnya membuat CRUD dengan Query Builder sudah saya jelaskan apa itu yang dimaksud CRUD. Ditutorial ini akan sedikit saya bahas lagi apa itu CRUD. Create, read, update dan delete biasanya disingkat CRUD. Operasi CRUD ini digunakan untuk membuat, membaca, mengubah dan menghapus data dalam database. Untuk CRUD Ditutorial ini kita akan memanfaatkan Eloquent ORM dan RESTful Resource Controllers. Eloquent ORM adalah ORM (Object Relational Mapping) yang dibundling bersama Laravel Framework. Dengan ORM kita akan lebih mudah dalam membuat proses CRUD. Sedangkan RESTful Resource Controllers adalah untuk mempermudah dalam membuat RESTful controllers. RESTful resource adalah semua hal yang bisa diakses dan ditransfer  melalui web antara client dan server. Contohnya saja pada aplikasi facebook atau google plus. Pada suatu website mereka untuk login ke website mereka bisa menggunakan data pihak ketiga yaitu facebook dan google plus.

crud eloquent dan restful controllers laravel

Sebelum lanjut untuk membuat CRUD dengan Eloquent ORM dan RESTful Resource Controllers silahkan membuat database terlebih dahulu jika tidak mengikuti tutorial sebelumnya.

Nama Database : belajarlaravel

Nama Tabel : profiles

Untuk setting database silahkan disetting pada file database.php didalam folder app/config. Silahkan untuk isi disesuaikan saja dengan pengaturan anda sendiri, jika belum paham betul silahkan melihat tutorial sebelumnya “ Cara Membangun Create, Read, Update dan Delete Menggunakan Query Builder di Laravel”.

Setelah selesai buka project anda yang telah diinstall sebelumnya jika belum bisa install project silahkan menngikuti tutorial sebelumnya install laravel. membuat dan konfigurasi database selanjutnya buat file bernama IvudController.php didalam folder app/controllers. Jika anda ingin cara cepat bisa menggunakan peritah berikut ini pada artisan.

php artisan controller:make IvudController

Lebih jelasnya silahkan lihat gambar dibawah ini.

create controller with controller:make

cd \xampp\htdocs\projectlaravel , digunakan untuk mengarahkan kedalam folder project kita.

php artisan controller:make IvudController , perintah untuk membuat file controller tanpa membuat secara manual dan langsung terisi perintah dasar. Jika menggunakan ini dan berhasil menjalankan perintah diatas langsung lihat folder app/controllers maka disitu akan ada file baru.

Jika anda membuat secara manual file controller IvudController.phpnya silahkan isi dengan code berikut ini, jika anda menggunakan perintah controller:make diatas silahkan diperhatikan saja code dibawah ini.

< ?php

class IvudController extends \BaseController {

        /**

         * Display a listing of the resource.

         *

         * @return Response

         */

        public function index()

        {
                        //
        }

        /**

         * Show the form for creating a new resource.

         *

         * @return Response

         */

        public function create()

        {
                        //
        }

        /**

         * Store a newly created resource in storage.

         *

         * @return Response

         */

        public function store()

        {

                        //

        }


        /**

         * Display the specified resource.

         *

         * @param  int  $id

         * @return Response

         */

        public function show($id)

        {
                        //
        }

        /**

         * Show the form for editing the specified resource.

         *

         * @param  int  $id

         * @return Response

         */

        public function edit($id)

        {
                        //
        }

        /**

         * Update the specified resource in storage.

         *

         * @param  int  $id

         * @return Response

         */

        public function update($id)

        {
                        //
        }

        /**

         * Remove the specified resource from storage.

         *

         * @param  int  $id

         * @return Response

         */

        public function destroy($id)

        {
                        //
        }

}

// agar program berjalan lancar hapus spasi setelah tanda <

Masih dalam file IvudController.php sekarang silahkan diganti function index diatas menjadi seperti dibawah ini.

public function index()
{
        $profiles = Profile::paginate(5);
        $profiles = 
        [
            'profiles' => $profiles
    ];
return View::make('ivud.index', $profiles);
}

Kemudian buat file bernama Profile.php didalam folder app/models dan isikan dengan code dibawah ini.

< ?php class Profile extends Eloquent {

}

// agar program berjalan lancar hapus spasi setelah tanda <

Jika selesai langkah selanjutnya adalah membuat folder bernama ivud didalam folder app/views. Setelah itu didalam folder ivud buat file bernama index.blade.php dan isikan dengan code dibawah ini.

@extends('layouts.master')
@section('content')
< div class="row">
    < div class="col-lg-12">
        < h1 class="page-header">
            Halaman 
            < small>Daftar Profile< /small>
        < /h1>
        @if (Session::has('message'))
            {{ Session::get('message') }}
        @endif
        < p>< a href="{{ URL::to('ivud/create') }}" class="btn btn-primary" role="button">Tambah Profile Baru< /a>< /p>
        < div class="table-responsive">
                            < table class="table table-bordered table-hover">
                                < thead>
                                    < tr>
                                        < th>ID< /th>
                                        < th>Nama< /th>
                                        < th>Jenis Kelamin< /th>
                                        < th width="146">Aksi< /th>
                                    < /tr>
                                < /thead>
                                < tbody>
                                @foreach($profiles as $value)
                                    < tr>
                                        < td>{{{ $value->id }}}< /td>
                                        < td>{{{ $value->nama }}}< /td>
                                        < td>{{{ $value->jeniskelamin == 'L' ? 'Laki - laki' : 'Perempuan' }}}< /td>
                                        < td>
                                            {{ Form::open(array('url' => 'ivud/' . $value->id)) }}
                                            < div class="btn-group">
                                            < a href="{{ URL::to('ivud/' . $value->id . '/edit') }}" class="btn btn-primary">Ubah< /a>
                                            {{ Form::hidden('_method', 'DELETE') }}
                                            {{Form::button('Hapus', array('type' => 'submit', 'class' => 'btn btn-primary'))}}
                                            < /div>
                                            {{ Form::close() }}
                                        < /td>
                                    < /tr>
                                @endforeach    
                                < /tbody>
                            < /table>
            < /div>
            {{$profiles->links()}}

    < /div>
< /div>
@stop

// agar program berjalan lancar hapus spasi setelah tanda <

Selanjutnya buka file routes.php pada folder app dan tambahkan code dibawah ini.

Route::resource('ivud', 'IvudController');

Dengan code route diatas kita tidak perlu seperti tutorial kemarin membuat satu – satu routenya cukup satu baris sudah mewakili satu CRUD. Jika kita jalankan dengan mengetikkan url seperti ini dibrowser

http://localhost/projectlaravel/public/ivud

hasilnya pun sama seperti tutorial CRUD dengan Query Builder.

list crud eloquent dan restful controllers laravel 

Selanjutnya ganti code function create dan store di dalam file IvudController.php

public function create()
{
        return View::make('ivud.create');
}


public function store()
{
        $rules = array(
                'nama' => 'required',
                'jeniskelamin' => 'required',
        );

        $validator = Validator::make(Input::all(), $rules);

        if ($validator->fails()) {      
                return Redirect::to('ivud/create')->withErrors($validator)->withInput();
        } else {                        
                $profile = new Profile;
        $profile->nama = Input::get('nama');
        $profile->jeniskelamin = Input::get('jeniskelamin');
        $profile->alamat = Input::get('alamat');
        $profile->save();

Session::flash('message', 'Data Berhasil Ditambahkan');
        return Redirect::to('ivud');
        }
}

Sekarang buat file didalam folder app/views bernama create.blade.php dan isikan code dibawah ini.

@extends('layouts.master')
@section('content')
< div class="row">
    < div class="col-lg-12">
        < h1 class="page-header">
            Halaman 
            < small>Tambah Profile< /small>
        < /h1>

       {{ Form::open(array('url' => 'ivud')) }} 
            
            < div class="form-group">
                {{ Form::label('nama', 'Nama') }}
                {{ Form::text('nama', null, array('class' => 'form-control','placeholder'=>'masukkan nama')) }}
                {{ '< div>'.$errors->first('nama').'< /div>' }}
            < /div>

             < div class="form-group">
                {{ Form::label('jeniskelamin', 'Jenis Kelamin') }}
                {{ Form::select('jeniskelamin', array('L' => 'Laki - Laki', 'P' => 'Perempuan'), null, array('class' => 'form-control','placeholder'=>'Pili Jenis Kelamin')) }}
                {{ '< div>'.$errors->first('jeniskelamin').'< /div>' }}
            < /div>

            < div class="form-group">
                {{ Form::label('alamat', 'Alamat') }}
                {{ Form::textarea('alamat', null, array('class' => 'form-control','placeholder'=>'masukkan alamat')) }}   
            < /div>
            {{ Form::submit('SIMPAN', array('class' => 'form-control')) }}

        {{ Form::close() }}

    < /div>
< /div>
@stop

// agar program berjalan lancar hapus spasi setelah tanda < 

Untuk menjalankan coba ketikan url seperti ini.

http://localhost/projectlaravel/public/ivud/create

Hasilnya akan seperti gambar dibawah ini.

form tambah profile eloqunet laravel

Isi data lalu klik tombol simpan dan amati apa yang terjadi.

Selanjutnya silahkan ganti code function edit dan update pada file IvudController.php seperti dibawah ini.

public function edit($id)
{
    $profilesbyid = Profile::findOrFail($id);
    $profilesbyid = 
    [
        'profilesbyid' => $profilesbyid
    ];
    return View::make('ivud.edit', $profilesbyid);
}

public function update($id)
{
    $rules = array(
        'nama' => 'required',
        'jeniskelamin' => 'required',
    );

    $validator = Validator::make(Input::all(), $rules);

    if ($validator->fails()) {  
        return Redirect::to('ivud/'.$id.'/edit')->withErrors($validator)->withInput();
    } else {
        $profile = Profile::findOrFail($id);
        $profile->nama = Input::get('nama');
        $profile->jeniskelamin = Input::get('jeniskelamin');
        $profile->alamat = Input::get('alamat');
        $profile->save(); 

    Session::flash('message', 'Data Berhasil Diubah');
    return Redirect::to('ivud');
    }
}

Kemudian buat file bernama edit.blade.php didalam folder app/views/ivud dan isikan dengan code dibawah ini.

@extends('layouts.master')
@section('content')
< div class="row">
    < div class="col-lg-12">
        < h1 class="page-header">
            Halaman 
            < small>Ubah Profile< /small>
        < /h1>
       
        {{ Form::model($profilesbyid, array('route' => array('ivud.update', $profilesbyid->id),'method' => 'PUT')) }}
            < div class="form-group">
                {{ Form::label('nama', 'Nama') }}
                {{ Form::text('nama', null, array('class' => 'form-control','placeholder'=>'masukkan nama')) }}
                {{ '< div>'.$errors->first('nama').'< /div>' }}
            < /div>

             < div class="form-group">
                {{ Form::label('jeniskelamin', 'Jenis Kelamin') }}
                {{ Form::select('jeniskelamin', array('L' => 'Laki - Laki', 'P' => 'Perempuan'), null, array('class' => 'form-control','placeholder'=>'Pili Jenis Kelamin')) }}
                {{ '< div>'.$errors->first('jeniskelamin').'< /div>' }}
            < /div>

            < div class="form-group">
                {{ Form::label('alamat', 'Alamat') }}
                {{ Form::textarea('alamat', null, array('class' => 'form-control','placeholder'=>'masukkan alamat')) }}   
            < /div>
            {{ Form::submit('SIMPAN', array('class' => 'form-control')) }}

        {{ Form::close() }}

    < /div>
< /div>
@stop

// agar program berjalan lancar hapus spasi setelah tanda <  

Untuk coba menjalankannya silahkan ketik url seperti ini.

http://localhost/projectlaravel/public/ivud/1/edit

atau bisa klik tombol ubah maka hasilnya seperti gambar dibawah ini.

form ubah profile eloquent laravel

Terakhir yaitu membuat code untuk delete data, silahka code function destroy dalam file IvudController.php diganti menjadi seperti dibawah ini.

public function destroy($id)
{
    $profile = Profile::findOrFail($id);
    $profile->delete();
    Session::flash('message', 'Data Berhasil Dihapus');
    return Redirect::to('crud');
}

Untuk tutorial membuat CRUD dengan Eloquent ORM dan RESTful Resource Controllers sampai sini sudah selesai untuk menjalankan delete data bisa klik tombol hapus. Silahkan dipilih mana yang lebih baik menggunakan Query Builder atau Menggunakan Eloqunet ORM semua tergantung pada masing – masing individu.

Jika anda mengikuti tutorial ini dari awal jangan lupa menambahkan code dibawah ini di folder app/views/includes lalu cari file sidebar.blade.php

< li>
      < a href="{{ URL::to('ivud') }}">< i class="fa fa-fw fa-edit">< /i> CRUD Eloquent ORM< /a>
< /li>

// agar program berjalan lancar hapus spasi setelah tanda <


comments powered by Disqus

CARI

KATEGORI PEMROGRAMAN

PEMROGRAMAN Terpopuler

PEMROGRAMAN ACAK