Seputar Pemrograman

Cara Membangun Create, Read, Update dan Delete Menggunakan Query Builder di Laravel

  29 September 2014     Tutorial Framework Laravel     seputarpemrograman

Create, read, update dan delete biasanya disingkat CRUD. Operasi CRUD ini digunakan untuk membuat, membaca, mengubah dan menghapus data dalam database. Operasi CRUD adalah operasi umum untuk mengolah data dan biasanya digunakan juga untuk belajar pertama kali untuk mengolah data sederhana bagi pemula.

Apa itu query builder, jika anda pernah belajar framework codeigniter pasti sudah mengenal, di framework codeigniter biasa disebut active record. Sedangkan di framework laravel disebut sebagai query builder. Dengan query builder code yang kita bikin akan mudah atau enak dibaca. Disamping itu ketika ingin migrasi kedatabase lain anda tidak perlu mengubah query (catatan hanya database yang didukung oleh laravel saja). Jika anda belum pernah atau belum mendengar sama sekali. Query builder sama dengan sql / query yang biasa kita pakai contoh select * from tabel; Cuma di query builder lebih dipersingkat lagi dan dibikin agar support dengan beberapa database. Untuk lebih jelasnnya silahkan lihat tutorial query builder di laravel.com

tampilan crud query builder laravel

Kali ini kita akan membuat operasi crud sederhana seperti tampilan gambar diatas dengan memanfaatkan database yang kita buat pada tutorial “Cara Menggunakan Migrations dan Schema Builder di Framework Laravel”. Jika anda belum terbiasa dengan cara ini, anda bisa langsung membuatnya di phpmyadmin dengan struktur tabel dan nama database sebagai berikut.

Nama Database : belajarlaravel

Nama Tabel : profiles

Struktur tabel silahkan dilihat gambar dibawah ini atau SQL yang saya sertakan.

 tabel profile laravel

CREATE TABLE IF NOT EXISTS `profiles` (

  `id` int(10) unsigned NOT NULL AUTO_INCREMENT,

  `nama` varchar(100) COLLATE utf8_unicode_ci NOT NULL,

  `jeniskelamin` enum('L','P') COLLATE utf8_unicode_ci NOT NULL,

  `alamat` varchar(255) COLLATE utf8_unicode_ci DEFAULT NULL,

  `created_at` timestamp NOT NULL DEFAULT '0000-00-00 00:00:00',

  `updated_at` timestamp NOT NULL DEFAULT '0000-00-00 00:00:00',

  PRIMARY KEY (`id`)

) ENGINE=InnoDB  DEFAULT CHARSET=utf8 COLLATE=utf8_unicode_ci AUTO_INCREMENT=4 ;

Jika telah selesai membuat database diatas silahkan di konfigurasi dulu, database.php didalam folder app/config.

'mysql' => array(

      'driver'    => 'mysql',

      'host'      => 'localhost',

      'database'  => 'belajarlaravel',

      'username'  => 'root',

      'password'  => '',

      'charset'   => 'utf8',

      'collation' => 'utf8_unicode_ci',

      'prefix'    => '',

),

Kemudian kita lanjutkan dengan membuat controller lebih dahulu bernama CrudController.php letakkan dalam folder app/controllers. Jika sudah silahkan isi dengan code dibawah ini.

< ?php 
class CrudController extends \BaseController {
   public function index()
	{
		$profiles = DB::table('profiles')->paginate(5);
		$profiles = 
		[
		    'profiles' => $profiles
	    ];
        return View::make('crud.index', $profiles);
    }

}

Sekarang buat folder bernama crud didalam folder app/views. Setelah itu didalam folder crud 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('crud/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>
                                        	< div class="btn-group">
						< a href="{{ URL::to('crud/edit/'.$value->id) }}" class="btn btn-primary">Ubah< /a>
						< a href="{{ URL::to('crud/destroy/'.$value->id) }}" class="btn btn-primary">Hapus< /a>
						< /div>
                                        < /td>
                                    < /tr>
                                @endforeach    
                                < /tbody>
                            < /table>
            < /div>
            {{$profiles->links()}}

    < /div>
< /div>
@stop

// agar berjalan dengan baik hilangkan spasi sesudah tandan <

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

Route::get('crud', 'CrudController@index');

Sekarang silahkan diisi dulu data secara manual di phpmyadmin, terserah anda diisi data berapapun dan untuk menjalankan hasil code diatas ketikan url seperti ini.

http://localhost/projectlaravel/public/crud

maka akan tampil halaman seperti gambar dibawah ini.

 tampilan daftar profile crud laravel 

Darisini anda sudah berhasil menampilkan data dari database. Selanjtunya kita akan membuat form tambah data profile. Tambahkan code berikut ini di contoller bernama CrudController.php dibawah function index.

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

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

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

      if ($validator->fails()) {    
            return Redirect::to('crud/create')->withErrors($validator)->withInput();
      } else {                
      DB::table('profiles')->insert(
      array(
                  'nama' => Input::get('nama'),
                  'jeniskelamin' => Input::get('jeniskelamin'),
                  'alamat' => Input::get('alamat')
            )
            );

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

Kemudian buat file bernama create.blade.php didalam folder crud yang sebelumnya sudah dibuat 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' => 'crud/create')) }}
            
            < 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 berjalan dengan baik hilangkan spasi sesudah tandan <

Kemudian di routes.php tambahkan code dibawah ini.

Route::get('crud/create','CrudController@create');
Route::post('crud/create','CrudController@store');

Selesai jalankan dengan menekan tombol tambah profile baru atau ketikan url seperti ini.

http://localhost/projectlaravel/public/crud/create

Sehingga menampilkan form sebagai berikut.

form tambah profile laravel

Silahkan dicoba input data dan lihat hasilnya.

Setelah membuat tambah data kita akan membuat update atau ubah data. Maka dari itu tambahkan code dibawah ini didalam controller CrudController.php dibawah function store.

public function edit($id)
{
      $profilesbyid = DB::table('profiles')->where('id',$id)->first();
      $profilesbyid = 
      [
          'profilesbyid' => $profilesbyid
    ];
  return View::make('crud.edit', $profilesbyid);
}


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

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

      if ($validator->fails()) {    
            echo "string";
            return Redirect::to('crud/edit/'.$id)->withErrors($validator)->withInput();
      } else {
      DB::table('profiles')
      ->where('id', $id)
      ->update(array(
                  'nama' => Input::get('nama'),
                  'jeniskelamin' => Input::get('jeniskelamin'),
                  'alamat' => Input::get('alamat')
            ));

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


Jika sudah silahkan dibuat file bernama edit.blade.php didalam folder crud dan isikan 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('crud.update', $profilesbyid->id))) }}
            < 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 berjalan dengan baik hilangkan spasi sesudah tandan <

Tambahkan juga code dibawah ini didalam routes.php

Route::get('crud/edit/{id}', 'CrudController@edit');
Route::post('crud/update/{id}', array('as' => 'crud.update', 'uses' => 'CrudController@update'));

Sekarang coba jalankan untuk mengubah data dengan menekan tombol ubah maka akan tampil form seperti gambar ini.

form ubah profile laravel

Ubah data apapun dan klik tombol simpan dan silahkan amati apa yang terjadi.

Yang terakhir adalah membuat fungsi untuk menghapus data, silahkan tambahkan code berikut di controller CrudController.php dibawah function update.

public function destroy($id)
{
      DB::table('profiles')->where('id', '=', $id)->delete();
      Session::flash('message', 'Data Berhasil Dihapus');
      return Redirect::to('crud');
}

Dan dialam routes.php tambahkan juga code dibawah ini.

Route::get('crud/destroy/{id}','CrudController@destroy');

Selesai silahkan dicoba untuk menghapus data dengan menekan tombol hapus.

Itu adalah contoh dasar operasi CRUD menggunakan Query Builder bawaan Framework Laravel.


comments powered by Disqus

CARI

KATEGORI PEMROGRAMAN

PEMROGRAMAN Terpopuler

PEMROGRAMAN ACAK